aboutsummaryrefslogtreecommitdiff
path: root/cmd/podman/untag.go
diff options
context:
space:
mode:
authorSascha Grunert <sgrunert@suse.com>2019-12-16 13:28:16 +0100
committerSascha Grunert <sgrunert@suse.com>2020-01-08 10:06:10 +0100
commit40b74e02b77e83c377fdae83f626f83403b38152 (patch)
treec71e9d5c4cd1c1517006368c151b81c4ea5d4077 /cmd/podman/untag.go
parentc41fd09a8da3a96bc0e58f9f29f87b9bdf30264d (diff)
downloadpodman-40b74e02b77e83c377fdae83f626f83403b38152.tar.gz
podman-40b74e02b77e83c377fdae83f626f83403b38152.tar.bz2
podman-40b74e02b77e83c377fdae83f626f83403b38152.zip
Add `untag` sub-command
Podman now supports untagging images via the `untag` sub-command for the root and `image` commands. Testing and documentation has been added as well. Signed-off-by: Sascha Grunert <sgrunert@suse.com>
Diffstat (limited to 'cmd/podman/untag.go')
-rw-r--r--cmd/podman/untag.go67
1 files changed, 67 insertions, 0 deletions
diff --git a/cmd/podman/untag.go b/cmd/podman/untag.go
new file mode 100644
index 000000000..9ff62b808
--- /dev/null
+++ b/cmd/podman/untag.go
@@ -0,0 +1,67 @@
+package main
+
+import (
+ "github.com/containers/libpod/cmd/podman/cliconfig"
+ "github.com/containers/libpod/pkg/adapter"
+ "github.com/pkg/errors"
+ "github.com/sirupsen/logrus"
+ "github.com/spf13/cobra"
+)
+
+var (
+ untagCommand cliconfig.UntagValues
+
+ _untagCommand = &cobra.Command{
+ Use: "untag [flags] IMAGE [NAME...]",
+ Short: "Remove a name from a local image",
+ Long: "Removes one or more names from a locally-stored image.",
+ RunE: func(cmd *cobra.Command, args []string) error {
+ untagCommand.InputArgs = args
+ untagCommand.GlobalFlags = MainGlobalOpts
+ untagCommand.Remote = remoteclient
+ return untag(&untagCommand)
+ },
+ Example: `podman untag 0e3bbc2
+ podman untag imageID:latest otherImageName:latest
+ podman untag httpd myregistryhost:5000/fedora/httpd:v2`,
+ }
+)
+
+func init() {
+ untagCommand.Command = _untagCommand
+ untagCommand.SetHelpTemplate(HelpTemplate())
+ untagCommand.SetUsageTemplate(UsageTemplate())
+}
+
+func untag(c *cliconfig.UntagValues) error {
+ args := c.InputArgs
+
+ if len(args) == 0 {
+ return errors.Errorf("at least one image name needs to be specified")
+ }
+
+ runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
+ if err != nil {
+ return errors.Wrapf(err, "could not create runtime")
+ }
+ defer runtime.DeferredShutdown(false)
+
+ newImage, err := runtime.NewImageFromLocal(args[0])
+ if err != nil {
+ return err
+ }
+
+ tags := args[1:]
+ if len(args) == 1 {
+ // Remove all tags if not explicitly specified
+ tags = newImage.Names()
+ }
+ logrus.Debugf("Tags to be removed: %v", tags)
+
+ for _, tag := range tags {
+ if err := newImage.UntagImage(tag); err != nil {
+ return errors.Wrapf(err, "removing %q from %q", tag, newImage.InputName)
+ }
+ }
+ return nil
+}