From 0a2f426ceb41475cb0832dafc044b9863b2eb39d Mon Sep 17 00:00:00 2001 From: umohnani8 Date: Mon, 18 Dec 2017 21:30:12 -0500 Subject: rmi doesn't remove all images if an error occurs Print out the error if unable to remove image due to multiple tags or due to it being used in a container and continue to remove all the other images. Signed-off-by: umohnani8 Closes: #153 Approved by: rhatdan --- cmd/podman/rmi.go | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) (limited to 'cmd') diff --git a/cmd/podman/rmi.go b/cmd/podman/rmi.go index 1b4cb7390..98ecc1883 100644 --- a/cmd/podman/rmi.go +++ b/cmd/podman/rmi.go @@ -2,6 +2,7 @@ package main import ( "fmt" + "os" "github.com/pkg/errors" "github.com/projectatomic/libpod/libpod" @@ -49,7 +50,9 @@ func rmiCmd(c *cli.Context) error { if len(args) > 0 && removeAll { return errors.Errorf("when using the --all switch, you may not pass any images names or IDs") } + imagesToDelete := args[:] + var lastError error if removeAll { localImages, err := runtime.GetImages(&libpod.ImageFilterParams{}) if err != nil { @@ -63,13 +66,21 @@ func rmiCmd(c *cli.Context) error { for _, arg := range imagesToDelete { image, err := runtime.GetImage(arg) if err != nil { - return errors.Wrapf(err, "could not get image %q", arg) + if lastError != nil { + fmt.Fprintln(os.Stderr, lastError) + } + lastError = errors.Wrapf(err, "could not get image %q", arg) + continue } id, err := runtime.RemoveImage(image, c.Bool("force")) if err != nil { - return errors.Wrapf(err, "error removing image %q", id) + if lastError != nil { + fmt.Fprintln(os.Stderr, lastError) + } + lastError = errors.Wrapf(err, "failed to remove image") + } else { + fmt.Println(id) } - fmt.Printf("%s\n", id) } - return nil + return lastError } -- cgit v1.2.3-54-g00ecf