diff options
author | Sam Thursfield <sam@afuera.me.uk> | 2014-10-27 17:15:55 +0000 |
---|---|---|
committer | Sam Thursfield <sam@afuera.me.uk> | 2014-10-27 17:17:38 +0000 |
commit | a0c24350042082fe3e1195f8f6160da363c94843 (patch) | |
tree | 4db8e1be44b2d3106e33723fbe8c81777451ef5e /morphlib/plugins | |
parent | 71fbade1fdb5e0d578b9f0ec06d44b69951b8af8 (diff) | |
download | morph-a0c24350042082fe3e1195f8f6160da363c94843.tar.gz |
Fix distbuild to allow passing a commit instead of a named ref to be built
The recent changes to the BuildCommand.build() function caused distbuild
to break, because I didn't make the same change to the
InitiatorBuildCommand.build() function but did change how it was called.
This commit adds the ability to have optional fields in distbuild
messages. This is used to add an optional 'original_ref' field, which
will get passed to `morph serialise-artifact` by new distbuild
controllers, and will be ignored by older ones.
Diffstat (limited to 'morphlib/plugins')
-rw-r--r-- | morphlib/plugins/distbuild_plugin.py | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/morphlib/plugins/distbuild_plugin.py b/morphlib/plugins/distbuild_plugin.py index 653eeae8..e18af492 100644 --- a/morphlib/plugins/distbuild_plugin.py +++ b/morphlib/plugins/distbuild_plugin.py @@ -45,7 +45,7 @@ class SerialiseArtifactPlugin(cliapp.Plugin): def enable(self): self.app.add_subcommand('serialise-artifact', self.serialise_artifact, - arg_synopsis='REPO REF MORPHOLOGY') + arg_synopsis='REPO REF MORPHOLOGY [ORIGINAL_REF]') def disable(self): pass @@ -55,13 +55,22 @@ class SerialiseArtifactPlugin(cliapp.Plugin): distbuild.add_crash_conditions(self.app.settings['crash-condition']) - if len(args) != 3: - raise cliapp.AppException('Must get triplet') - - repo_name, ref, morph_name = args + if len(args) != 3 and len(args) != 4: + raise cliapp.AppException( + 'This command takes a repo/ref/morph triplet, and optionally ' + 'a ref name.') + + repo_name, ref, morph_name = args[0:3] + + if len(args) == 4: + original_ref = args[3] + else: + original_ref = ref + filename = morphlib.util.sanitise_morphology_path(morph_name) build_command = morphlib.buildcommand.BuildCommand(self.app) - srcpool = build_command.create_source_pool(repo_name, ref, filename) + srcpool = build_command.create_source_pool( + repo_name, ref, filename, original_ref=original_ref) artifact = build_command.resolve_artifacts(srcpool) self.app.output.write(distbuild.serialise_artifact(artifact)) self.app.output.write('\n') |