diff options
author | Daniel J Walsh <dwalsh@redhat.com> | 2021-05-05 16:38:32 -0400 |
---|---|---|
committer | Daniel J Walsh <dwalsh@redhat.com> | 2021-05-19 17:32:02 -0400 |
commit | 2b89b241461c6baba777894f09a75df17dd05741 (patch) | |
tree | d2dfa80d41cd5bb7dac3c5bc51a1c7ddf28f02da /cmd/podman/manifest/rm.go | |
parent | 4c756268e6d0dbe90e61a59d9644e34a0f2d5f36 (diff) | |
download | podman-2b89b241461c6baba777894f09a75df17dd05741.tar.gz podman-2b89b241461c6baba777894f09a75df17dd05741.tar.bz2 podman-2b89b241461c6baba777894f09a75df17dd05741.zip |
Add support for podman manifest rm command
This is mainly to match command line of Docker.
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
Diffstat (limited to 'cmd/podman/manifest/rm.go')
-rw-r--r-- | cmd/podman/manifest/rm.go | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/cmd/podman/manifest/rm.go b/cmd/podman/manifest/rm.go new file mode 100644 index 000000000..58c0de886 --- /dev/null +++ b/cmd/podman/manifest/rm.go @@ -0,0 +1,51 @@ +package manifest + +import ( + "context" + "fmt" + + "github.com/containers/podman/v3/cmd/podman/common" + "github.com/containers/podman/v3/cmd/podman/registry" + "github.com/containers/podman/v3/pkg/domain/entities" + "github.com/containers/podman/v3/pkg/errorhandling" + "github.com/spf13/cobra" +) + +var ( + rmCmd = &cobra.Command{ + Use: "rm LIST", + Short: "Remove manifest list or image index from local storage", + Long: "Remove manifest list or image index from local storage.", + RunE: rm, + ValidArgsFunction: common.AutocompleteImages, + Example: `podman manifest rm mylist:v1.11`, + Args: cobra.ExactArgs(1), + DisableFlagsInUseLine: true, + } +) + +func init() { + registry.Commands = append(registry.Commands, registry.CliCommand{ + Mode: []entities.EngineMode{entities.ABIMode, entities.TunnelMode}, + Command: rmCmd, + Parent: manifestCmd, + }) +} + +func rm(cmd *cobra.Command, args []string) error { + report, rmErrors := registry.ImageEngine().ManifestRm(context.Background(), args) + if report != nil { + for _, u := range report.Untagged { + fmt.Println("Untagged: " + u) + } + for _, d := range report.Deleted { + // Make sure an image was deleted (and not just untagged); else print it + if len(d) > 0 { + fmt.Println("Deleted: " + d) + } + } + registry.SetExitCode(report.ExitCode) + } + + return errorhandling.JoinErrors(rmErrors) +} |