mirror of
https://github.com/containers/podman.git
synced 2025-06-19 16:33:24 +08:00
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 <umohnani@redhat.com> Closes: #153 Approved by: rhatdan
This commit is contained in:
@ -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
|
||||
}
|
||||
|
Reference in New Issue
Block a user