github.com/walkingsparrow/docker@v1.4.2-0.20151218153551-b708a2249bfa/api/client/rmi.go (about)

     1  package client
     2  
     3  import (
     4  	"fmt"
     5  	"net/url"
     6  
     7  	"github.com/docker/docker/api/types"
     8  	Cli "github.com/docker/docker/cli"
     9  	flag "github.com/docker/docker/pkg/mflag"
    10  )
    11  
    12  // CmdRmi removes all images with the specified name(s).
    13  //
    14  // Usage: docker rmi [OPTIONS] IMAGE [IMAGE...]
    15  func (cli *DockerCli) CmdRmi(args ...string) error {
    16  	cmd := Cli.Subcmd("rmi", []string{"IMAGE [IMAGE...]"}, Cli.DockerCommands["rmi"].Description, true)
    17  	force := cmd.Bool([]string{"f", "-force"}, false, "Force removal of the image")
    18  	noprune := cmd.Bool([]string{"-no-prune"}, false, "Do not delete untagged parents")
    19  	cmd.Require(flag.Min, 1)
    20  
    21  	cmd.ParseFlags(args, true)
    22  
    23  	v := url.Values{}
    24  	if *force {
    25  		v.Set("force", "1")
    26  	}
    27  	if *noprune {
    28  		v.Set("noprune", "1")
    29  	}
    30  
    31  	var errNames []string
    32  	for _, name := range cmd.Args() {
    33  		options := types.ImageRemoveOptions{
    34  			ImageID:       name,
    35  			Force:         *force,
    36  			PruneChildren: !*noprune,
    37  		}
    38  
    39  		dels, err := cli.client.ImageRemove(options)
    40  		if err != nil {
    41  			fmt.Fprintf(cli.err, "%s\n", err)
    42  			errNames = append(errNames, name)
    43  		} else {
    44  			for _, del := range dels {
    45  				if del.Deleted != "" {
    46  					fmt.Fprintf(cli.out, "Deleted: %s\n", del.Deleted)
    47  				} else {
    48  					fmt.Fprintf(cli.out, "Untagged: %s\n", del.Untagged)
    49  				}
    50  			}
    51  		}
    52  	}
    53  	if len(errNames) > 0 {
    54  		return fmt.Errorf("Error: failed to remove images: %v", errNames)
    55  	}
    56  	return nil
    57  }