diff --git a/cmd/snap/cmd_prepare_image.go b/cmd/snap/cmd_prepare_image.go index 6ad2e39e28a..81e748f7255 100644 --- a/cmd/snap/cmd_prepare_image.go +++ b/cmd/snap/cmd_prepare_image.go @@ -55,6 +55,7 @@ type cmdPrepareImage struct { // TODO: introduce SnapWithChannel? Snaps []string `long:"snap" value-name:"[=]"` + Components []string `long:"comp" value-name:"+"` ExtraSnaps []string `long:"extra-snaps" hidden:"yes"` // DEPRECATED RevisionsFile string `long:"revisions"` WriteRevisionsFile string `long:"write-revisions" optional:"true" optional-value:"./seed.manifest"` @@ -88,6 +89,8 @@ For preparing classic images it supports a --classic mode`), // TRANSLATORS: This should not start with a lowercase letter. "snap": i18n.G("Include the given snap from the store or a local file and/or specify the channel to track for the given snap"), // TRANSLATORS: This should not start with a lowercase letter. + "comp": i18n.G("Include the given component from the store or a local file"), + // TRANSLATORS: This should not start with a lowercase letter. "extra-snaps": i18n.G("Extra snaps to be installed (DEPRECATED)"), // TRANSLATORS: This should not start with a lowercase letter. "revisions": i18n.G("Specify a seeds.manifest file referencing the exact revisions of the provided snaps which should be installed"), @@ -123,6 +126,7 @@ func (x *cmdPrepareImage) Execute(args []string) error { opts := &image.Options{ Snaps: x.ExtraSnaps, + Components: x.Components, ModelFile: x.Positional.ModelAssertionFn, Channel: x.Channel, Architecture: x.Architecture, diff --git a/cmd/snap/cmd_prepare_image_test.go b/cmd/snap/cmd_prepare_image_test.go index 7bbf0d6d665..2808c33ca85 100644 --- a/cmd/snap/cmd_prepare_image_test.go +++ b/cmd/snap/cmd_prepare_image_test.go @@ -131,7 +131,7 @@ func (s *SnapPrepareImageSuite) TestPrepareImageExtraSnaps(c *C) { r := cmdsnap.MockImagePrepare(prep) defer r() - rest, err := cmdsnap.Parser(cmdsnap.Client()).ParseArgs([]string{"prepare-image", "model", "prepare-dir", "--channel", "candidate", "--snap", "foo", "--snap", "bar=t/edge", "--snap", "local.snap", "--extra-snaps", "local2.snap", "--extra-snaps", "store-snap"}) + rest, err := cmdsnap.Parser(cmdsnap.Client()).ParseArgs([]string{"prepare-image", "model", "prepare-dir", "--channel", "candidate", "--snap", "foo", "--snap", "bar=t/edge", "--snap", "local.snap", "--extra-snaps", "local2.snap", "--extra-snaps", "store-snap", "--comp", "local.comp", "--comp", "bar+comp1"}) c.Assert(err, IsNil) c.Assert(rest, DeepEquals, []string{}) @@ -140,6 +140,7 @@ func (s *SnapPrepareImageSuite) TestPrepareImageExtraSnaps(c *C) { Channel: "candidate", PrepareDir: "prepare-dir", Snaps: []string{"foo", "bar", "local.snap", "local2.snap", "store-snap"}, + Components: []string{"local.comp", "bar+comp1"}, SnapChannels: map[string]string{"bar": "t/edge"}, }) }