diff options
author | Sam Thursfield <sam.thursfield@codethink.co.uk> | 2015-06-18 17:08:53 +0100 |
---|---|---|
committer | Pedro Alvarez <pedro.alvarez@codethink.co.uk> | 2015-06-22 13:12:37 +0000 |
commit | b18764f144983dfb9aa892892084af1daeb9100d (patch) | |
tree | a9529d65053b918451b79c66f17c9f59137605b3 /morphlib/plugins/get_repo_plugin.py | |
parent | 26dce1d6ef83294c184fc513232130dbbd8f19dc (diff) | |
download | morph-b18764f144983dfb9aa892892084af1daeb9100d.tar.gz |
Make more commands work outside a system-branch/workspace
This makes `morph get-chunk-details`, `morph get-repo` and `morph
show-build-log` work in any Git checkout of definitions.git. These
are all of the commands outside of the deprecated
branch_and_merge_plugin that take notice of system branches.
The DefinitionsRepo.relative_path_to_chunk() function is changed a
bit. It actually only existed for the `get-repo` command to use, but
it turns out that it did the wrong thing by returning a long path for
the repo (e.g. baserock/baserock/fhs-dirs) instead of a short one
(fhs-dirs). The latter is less typing, and is the behaviour expected
by the `get-repo` yarn tests, so it now does that.
Change-Id: I430b540b3b0f309cf7018e0b8236f0e8a9042d89
Diffstat (limited to 'morphlib/plugins/get_repo_plugin.py')
-rw-r--r-- | morphlib/plugins/get_repo_plugin.py | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/morphlib/plugins/get_repo_plugin.py b/morphlib/plugins/get_repo_plugin.py index 5701de97..38039406 100644 --- a/morphlib/plugins/get_repo_plugin.py +++ b/morphlib/plugins/get_repo_plugin.py @@ -60,11 +60,11 @@ class GetRepoPlugin(cliapp.Plugin): gd.update_submodules(self.app) gd.update_remotes() - def _get_chunk_dirname(self, path, sb, spec): + def _get_chunk_dirname(self, path, definitions_repo, spec): if path: return path else: - return sb.get_git_directory_name(spec['repo']) + return definitions_repo.relative_path_to_chunk(spec['repo']) def get_repo(self, args): '''Checkout a component repository. @@ -92,12 +92,9 @@ class GetRepoPlugin(cliapp.Plugin): path = os.path.abspath(args[1]) ref = self.app.settings['ref'] - ws = morphlib.workspace.open('.') - sb = morphlib.sysbranchdir.open_from_within('.') - loader = morphlib.morphloader.MorphologyLoader() - def checkout_chunk(morph, chunk_spec): - dirname = self._get_chunk_dirname(path, sb, chunk_spec) + dirname = self._get_chunk_dirname(path, definitions_repo, + chunk_spec) if not os.path.exists(dirname): self.app.status( msg='Checking out ref %(ref)s of %(chunk)s in ' @@ -123,8 +120,12 @@ class GetRepoPlugin(cliapp.Plugin): strata = set() found = 0 + definitions_repo = morphlib.definitions_repo.open( + '.', search_for_root=True, search_workspace=True, app=self.app) + loader = morphlib.morphloader.MorphologyLoader() + self.app.status(msg='Loading in all morphologies') - for morph in sb.load_all_morphologies(loader): + for morph in definitions_repo.load_all_morphologies(loader): if morph['kind'] == 'stratum': for chunk in morph['chunks']: if chunk['name'] == chunk_name: |