Repo: Rework factory() interface
Rather than handing down a complete config, only pass what is really needed: a repository fallback path. This can already be determined by the caller. Inside Repo.factory(), we can retrieve the global context now and can stop relying on a reference stored in the config. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
This commit is contained in:
parent
0c66b24a12
commit
4acde53b94
@ -82,9 +82,12 @@ class Config:
|
|||||||
"""
|
"""
|
||||||
repo_config_dict = self._config.get('repos', {})
|
repo_config_dict = self._config.get('repos', {})
|
||||||
repo_dict = {}
|
repo_dict = {}
|
||||||
|
repo_fallback_path = os.path.dirname(self.filename)
|
||||||
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 {}
|
||||||
repo_dict[repo] = Repo.factory(repo, repo_config_dict[repo], self)
|
repo_dict[repo] = Repo.factory(repo,
|
||||||
|
repo_config_dict[repo],
|
||||||
|
repo_fallback_path)
|
||||||
|
|
||||||
return repo_dict
|
return repo_dict
|
||||||
|
|
||||||
|
10
kas/repos.py
10
kas/repos.py
@ -27,6 +27,7 @@ import os
|
|||||||
import asyncio
|
import asyncio
|
||||||
import logging
|
import logging
|
||||||
from urllib.parse import urlparse
|
from urllib.parse import urlparse
|
||||||
|
from .context import get_context
|
||||||
from .libkas import run_cmd_async, run_cmd
|
from .libkas import run_cmd_async, run_cmd
|
||||||
|
|
||||||
__license__ = 'MIT'
|
__license__ = 'MIT'
|
||||||
@ -71,11 +72,10 @@ class Repo:
|
|||||||
self.path, self._layers)
|
self.path, self._layers)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def factory(name, repo_config, config):
|
def factory(name, repo_config, repo_fallback_path):
|
||||||
"""
|
"""
|
||||||
Return an instance Repo depending on params.
|
Return an instance Repo depending on params.
|
||||||
"""
|
"""
|
||||||
ctx = config.context
|
|
||||||
layers_dict = repo_config.get('layers', {})
|
layers_dict = repo_config.get('layers', {})
|
||||||
layers = list(filter(lambda x, laydict=layers_dict:
|
layers = list(filter(lambda x, laydict=layers_dict:
|
||||||
str(laydict[x]).lower() not in
|
str(laydict[x]).lower() not in
|
||||||
@ -100,7 +100,7 @@ class Repo:
|
|||||||
if url is None:
|
if url is None:
|
||||||
# No version control operation on repository
|
# No version control operation on repository
|
||||||
if path is None:
|
if path is None:
|
||||||
path = Repo.get_root_path(os.path.dirname(config.filename))
|
path = Repo.get_root_path(repo_fallback_path)
|
||||||
logging.info('Using %s as root for repository %s', path,
|
logging.info('Using %s as root for repository %s', path,
|
||||||
name)
|
name)
|
||||||
|
|
||||||
@ -108,11 +108,11 @@ class Repo:
|
|||||||
disable_operations = True
|
disable_operations = True
|
||||||
else:
|
else:
|
||||||
if path is None:
|
if path is None:
|
||||||
path = os.path.join(ctx.kas_work_dir, name)
|
path = os.path.join(get_context().kas_work_dir, name)
|
||||||
else:
|
else:
|
||||||
if not os.path.isabs(path):
|
if not os.path.isabs(path):
|
||||||
# Relative pathes are assumed to start from work_dir
|
# Relative pathes are assumed to start from work_dir
|
||||||
path = os.path.join(ctx.kas_work_dir, path)
|
path = os.path.join(get_context().kas_work_dir, path)
|
||||||
|
|
||||||
if typ == 'git':
|
if typ == 'git':
|
||||||
return GitRepo(url, path, refspec, layers, patches,
|
return GitRepo(url, path, refspec, layers, patches,
|
||||||
|
Loading…
Reference in New Issue
Block a user