github.com/khulnasoft/cli@v0.0.0-20240402070845-01bcad7beefa/cli/command/image/tag.go (about) 1 package image 2 3 import ( 4 "context" 5 6 "github.com/khulnasoft/cli/cli" 7 "github.com/khulnasoft/cli/cli/command" 8 "github.com/khulnasoft/cli/cli/command/completion" 9 "github.com/spf13/cobra" 10 ) 11 12 type tagOptions struct { 13 image string 14 name string 15 } 16 17 // NewTagCommand creates a new `docker tag` command 18 func NewTagCommand(dockerCli command.Cli) *cobra.Command { 19 var opts tagOptions 20 21 cmd := &cobra.Command{ 22 Use: "tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]", 23 Short: "Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE", 24 Args: cli.ExactArgs(2), 25 RunE: func(cmd *cobra.Command, args []string) error { 26 opts.image = args[0] 27 opts.name = args[1] 28 return runTag(cmd.Context(), dockerCli, opts) 29 }, 30 Annotations: map[string]string{ 31 "aliases": "docker image tag, docker tag", 32 }, 33 ValidArgsFunction: completion.ImageNames(dockerCli), 34 } 35 36 flags := cmd.Flags() 37 flags.SetInterspersed(false) 38 39 return cmd 40 } 41 42 func runTag(ctx context.Context, dockerCli command.Cli, opts tagOptions) error { 43 return dockerCli.Client().ImageTag(ctx, opts.image, opts.name) 44 }