repos: move more of the complexity from config to Repo.factory
This commit just moved some code around, to a place where it seems to fit better. Signed-off-by: Henning Schild <henning.schild@siemens.com>
This commit is contained in:
parent
0c7db599fd
commit
6a85296836
@ -177,38 +177,9 @@ class Config:
|
|||||||
repo_config_dict = self._config.get('repos', {})
|
repo_config_dict = self._config.get('repos', {})
|
||||||
repo_dict = {}
|
repo_dict = {}
|
||||||
for repo in repo_config_dict:
|
for repo in repo_config_dict:
|
||||||
|
|
||||||
repo_config_dict[repo] = repo_config_dict[repo] or {}
|
repo_config_dict[repo] = repo_config_dict[repo] or {}
|
||||||
layers_dict = repo_config_dict[repo].get('layers', {})
|
repo_dict[repo] = Repo.factory(repo, repo_config_dict[repo], self)
|
||||||
layers = list(filter(lambda x, laydict=layers_dict:
|
|
||||||
str(laydict[x]).lower() not in
|
|
||||||
['disabled', 'excluded', 'n', 'no', '0',
|
|
||||||
'false'],
|
|
||||||
layers_dict))
|
|
||||||
url = repo_config_dict[repo].get('url', None)
|
|
||||||
name = repo_config_dict[repo].get('name', repo)
|
|
||||||
typ = repo_config_dict[repo].get('type', 'git')
|
|
||||||
refspec = repo_config_dict[repo].get('refspec', None)
|
|
||||||
path = repo_config_dict[repo].get('path', None)
|
|
||||||
dis_ops = False
|
|
||||||
|
|
||||||
if url is None:
|
|
||||||
# No git operation on repository
|
|
||||||
if path is None:
|
|
||||||
path = Repo.get_root_path(os.path.dirname(self.filename),
|
|
||||||
self.environ)
|
|
||||||
logging.info('Using %s as root for repository %s', path,
|
|
||||||
name)
|
|
||||||
|
|
||||||
url = path
|
|
||||||
dis_ops = True
|
|
||||||
else:
|
|
||||||
path = path or os.path.join(self.kas_work_dir, name)
|
|
||||||
|
|
||||||
rep = Repo.factory(url=url, path=path, typ=typ,
|
|
||||||
refspec=refspec, layers=layers,
|
|
||||||
disable_operations=dis_ops)
|
|
||||||
repo_dict[repo] = rep
|
|
||||||
return repo_dict
|
return repo_dict
|
||||||
|
|
||||||
def get_bitbake_targets(self):
|
def get_bitbake_targets(self):
|
||||||
|
28
kas/repos.py
28
kas/repos.py
@ -69,11 +69,35 @@ class Repo:
|
|||||||
self.path, self._layers)
|
self.path, self._layers)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def factory(url, path, typ, refspec, layers, disable_operations):
|
def factory(name, repo_config, config):
|
||||||
"""
|
"""
|
||||||
Return an instance Repo depending on params.
|
Return an instance Repo depending on params.
|
||||||
"""
|
"""
|
||||||
# pylint: disable=too-many-arguments
|
layers_dict = repo_config.get('layers', {})
|
||||||
|
layers = list(filter(lambda x, laydict=layers_dict:
|
||||||
|
str(laydict[x]).lower() not in
|
||||||
|
['disabled', 'excluded', 'n', 'no', '0', 'false'],
|
||||||
|
layers_dict))
|
||||||
|
url = repo_config.get('url', None)
|
||||||
|
name = repo_config.get('name', name)
|
||||||
|
typ = repo_config.get('type', 'git')
|
||||||
|
refspec = repo_config.get('refspec', None)
|
||||||
|
path = repo_config.get('path', None)
|
||||||
|
disable_operations = False
|
||||||
|
|
||||||
|
if url is None:
|
||||||
|
# No git operation on repository
|
||||||
|
if path is None:
|
||||||
|
path = Repo.get_root_path(os.path.dirname(config.filename),
|
||||||
|
config.environ)
|
||||||
|
logging.info('Using %s as root for repository %s', path,
|
||||||
|
name)
|
||||||
|
|
||||||
|
url = path
|
||||||
|
disable_operations = True
|
||||||
|
else:
|
||||||
|
path = path or os.path.join(config.kas_work_dir, name)
|
||||||
|
|
||||||
if typ == 'git':
|
if typ == 'git':
|
||||||
return GitRepo(url, path, refspec, layers, disable_operations)
|
return GitRepo(url, path, refspec, layers, disable_operations)
|
||||||
raise NotImplementedError('Repo typ "%s" not supported.' % typ)
|
raise NotImplementedError('Repo typ "%s" not supported.' % typ)
|
||||||
|
Loading…
Reference in New Issue
Block a user