diff --git a/kas/config.py b/kas/config.py index b8b3cd3..2ffa8b0 100644 --- a/kas/config.py +++ b/kas/config.py @@ -49,7 +49,7 @@ except ImportError: return platform.dist()[0] from .repos import Repo -from .libkas import run_cmd, repos_fetch +from .libkas import repos_fetch __license__ = 'MIT' __copyright__ = 'Copyright (c) Siemens AG, 2017' @@ -193,17 +193,8 @@ class Config: if url is None: # No git operation on repository if path is None: - # In-tree configuration - path = os.path.dirname(self.filename) - (ret, output) = run_cmd(['git', - 'rev-parse', - '--show-toplevel'], - cwd=path, - env=self.environ, - fail=False, - liveupdate=False) - if ret == 0: - path = output.strip() + path = Repo.get_root_path(os.path.dirname(self.filename), + self.environ) logging.info('Using %s as root for repository %s', path, name) diff --git a/kas/repos.py b/kas/repos.py index 0b5fb53..4e4e3b7 100644 --- a/kas/repos.py +++ b/kas/repos.py @@ -155,3 +155,20 @@ class Repo: run_cmd(['git', 'checkout', '-q', '{refspec}'.format(refspec=self.refspec)], cwd=self.path) + + @staticmethod + def get_root_path(path, environ): + """ + Check if path is a version control repo and return its root path. + """ + (ret, output) = run_cmd(['git', + 'rev-parse', + '--show-toplevel'], + cwd=path, + env=environ, + fail=False, + liveupdate=False) + if ret == 0: + return output.strip() + + return path