diff --git a/internal/commands/extension_package.go b/internal/commands/extension_package.go index 57395c9f1..5b69d3912 100644 --- a/internal/commands/extension_package.go +++ b/internal/commands/extension_package.go @@ -26,6 +26,7 @@ type ExtensionPackageFlags struct { Policy string Path string AdditionalTags []string + Label map[string]string } // ExtensionPackager packages extensions @@ -123,6 +124,7 @@ func ExtensionPackage(logger logging.Logger, cfg config.Config, packager Extensi PullPolicy: pullPolicy, Targets: multiArchCfg.Targets(), AdditionalTags: flags.AdditionalTags, + Labels: flags.Label, }); err != nil { return err } @@ -155,6 +157,8 @@ Targets should be in the format '[os][/arch][/variant]:[distroname@osversion@ano - To specify multiple distribution versions: '--target "linux/arm/v6:ubuntu@14.04" --target "linux/arm/v6:ubuntu@16.04"' `) cmd.Flags().StringSliceVarP(&flags.AdditionalTags, "tag", "", nil, "Additional tags to push the output image to.\nTags should be in the format 'image:tag' or 'repository/image:tag'."+stringSliceHelp("tag")) + cmd.Flags().StringToStringVarP(&flags.Label, "label", "l", nil, "Labels to add to packaged Extension, in the form of '='") + AddHelpFlag(cmd, "package") return cmd } diff --git a/internal/commands/extension_package_test.go b/internal/commands/extension_package_test.go index 241c4dfc0..ccce19242 100644 --- a/internal/commands/extension_package_test.go +++ b/internal/commands/extension_package_test.go @@ -303,6 +303,20 @@ func testExtensionPackageCommand(t *testing.T, when spec.G, it spec.S) { }) }) + when("--label cannot be parsed", func() { + it("errors with a descriptive message", func() { + cmd := packageCommand() + cmd.SetArgs([]string{ + "some-image-name", "--config", "/path/to/some/file", + "--label", "name+value", + }) + + err := cmd.Execute() + h.AssertNotNil(t, err) + h.AssertError(t, err, "invalid argument \"name+value\" for \"-l, --label\" flag: name+value must be formatted as key=value") + }) + }) + when("--target cannot be parsed", func() { it("errors with a descriptive message", func() { cmd := packageCommand()