Source code for linchpin.fetch.fetch_local

import os
import urlparse
import tempfile

from fetch import Fetch
from linchpin.exceptions import LinchpinError


[docs]class FetchLocal(Fetch): def __init__(self, ctx, fetch_type, src, dest, cache_dir, root): super(FetchLocal, self).__init__(ctx, fetch_type, dest, root) self.cache_dir = os.path.join(cache_dir, "local") if not os.path.exists(self.cache_dir): os.mkdir(self.cache_dir) src_parse = urlparse.urlparse(src) self.src = os.path.abspath(os.path.join( src_parse.netloc, src_parse.path)) if not os.path.exists(self.src): raise LinchpinError('{0} is not a valid path'.format(src)) if os.path.samefile(self.src, self.dest): raise LinchpinError("Provide two different locations")
[docs] def fetch_files(self): paths = [] if self.root is not None: for ext in self.root: paths.append(os.path.join(self.src, ext.lstrip('/'))) else: paths.append(self.src) for path in paths: key = "{0}|{1}".format(self.dest.replace(':', ''), path.replace(':', '')) fetch_dir = self.cfgs["local"].get(key, None) if not fetch_dir: td = tempfile.mkdtemp(prefix="local_", dir=self.cache_dir) self.write_cfg("local", key, td) else: td = fetch_dir self.copy_dir(path, td) self.tempdirs.append(td)