tag.go 898 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package image
  2. import (
  3. "golang.org/x/net/context"
  4. "github.com/docker/docker/cli"
  5. "github.com/docker/docker/cli/command"
  6. "github.com/spf13/cobra"
  7. )
  8. type tagOptions struct {
  9. image string
  10. name string
  11. }
  12. // NewTagCommand creates a new `docker tag` command
  13. func NewTagCommand(dockerCli *command.DockerCli) *cobra.Command {
  14. var opts tagOptions
  15. cmd := &cobra.Command{
  16. Use: "tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]",
  17. Short: "Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE",
  18. Args: cli.ExactArgs(2),
  19. RunE: func(cmd *cobra.Command, args []string) error {
  20. opts.image = args[0]
  21. opts.name = args[1]
  22. return runTag(dockerCli, opts)
  23. },
  24. }
  25. flags := cmd.Flags()
  26. flags.SetInterspersed(false)
  27. return cmd
  28. }
  29. func runTag(dockerCli *command.DockerCli, opts tagOptions) error {
  30. ctx := context.Background()
  31. return dockerCli.Client().ImageTag(ctx, opts.image, opts.name)
  32. }