add option to set cache_dir
diff --git a/reclass/storage/yaml_git/__init__.py b/reclass/storage/yaml_git/__init__.py
index 51a9713..a2a0019 100644
--- a/reclass/storage/yaml_git/__init__.py
+++ b/reclass/storage/yaml_git/__init__.py
@@ -39,11 +39,13 @@
self.repo = None
self.branch = None
self.root = None
+ self.cache_dir = None
self.update(dictionary)
def update(self, dictionary):
if 'repo' in dictionary: self.repo = dictionary['repo']
if 'branch' in dictionary: self.branch = dictionary['branch']
+ if 'cache_dir' in dictionary: self.cache_dir = dictionary['cache_dir']
if 'root' in dictionary:
if dictionary['root'] is None:
self.root = None
@@ -56,18 +58,23 @@
class GitRepo(object):
- def __init__(self, url):
+ def __init__(self, url, cache_dir):
self.transport, _, self.url = url.partition('://')
self.name = self.url.replace('/', '_')
self.credentials = None
self.remotecallbacks = None
+
+ if cache_dir is None:
+ self.cache_dir = '{0}/{1}/{2}'.format(os.path.expanduser("~"), '.reclass/cache/git', self.name)
+ else:
+ self.cache_dir = '{0}/{1}'.format(cache_dir, self.name)
+
self._init_repo()
self._fetch()
self.branches = self.repo.listall_branches()
self.files = self.files_in_repo()
def _init_repo(self):
- self.cache_dir = '{0}/{1}/{2}'.format(os.path.expanduser("~"), '.reclass/cache/git', self.name)
if os.path.exists(self.cache_dir):
self.repo = pygit2.Repository(self.cache_dir)
else:
@@ -182,13 +189,13 @@
if nodes_uri is not None:
self._nodes_uri = GitURI({ 'branch': 'master' })
self._nodes_uri.update(nodes_uri)
- self._load_repo(self._nodes_uri.repo)
+ self._load_repo(self._nodes_uri.repo, self._nodes_uri.cache_dir)
self._nodes = self._repos[self._nodes_uri.repo].nodes(self._nodes_uri.branch, self._nodes_uri.root)
if classes_uri is not None:
self._classes_default_uri = GitURI({ 'branch': '__env__' })
self._classes_default_uri.update(classes_uri)
- self._load_repo(self._classes_default_uri.repo)
+ self._load_repo(self._classes_default_uri.repo, self._classes_default_uri.cache_dir)
self._classes_uri = []
if 'env_overrides' in classes_uri:
@@ -222,9 +229,9 @@
def enumerate_nodes(self):
return self._nodes.keys()
- def _load_repo(self, url):
+ def _load_repo(self, url, cache_dir):
if url not in self._repos:
- self._repos[url] = GitRepo(url)
+ self._repos[url] = GitRepo(url, cache_dir)
def _env_to_uri(self, environment):
ret = None