github.com/vieux/docker@v0.6.3-0.20161004191708-e097c2a938c7/cli/command/system/df.go (about)

     1  package system
     2  
     3  import (
     4  	"github.com/docker/docker/cli"
     5  	"github.com/docker/docker/cli/command"
     6  	"github.com/docker/docker/cli/command/formatter"
     7  	"github.com/spf13/cobra"
     8  	"golang.org/x/net/context"
     9  )
    10  
    11  type diskUsageOptions struct {
    12  	verbose bool
    13  }
    14  
    15  // NewDiskUsageCommand creates a new cobra.Command for `docker df`
    16  func NewDiskUsageCommand(dockerCli *command.DockerCli) *cobra.Command {
    17  	var opts diskUsageOptions
    18  
    19  	cmd := &cobra.Command{
    20  		Use:   "df [OPTIONS]",
    21  		Short: "Show docker disk usage",
    22  		Args:  cli.RequiresMaxArgs(1),
    23  		RunE: func(cmd *cobra.Command, args []string) error {
    24  			return runDiskUsage(dockerCli, opts)
    25  		},
    26  	}
    27  
    28  	flags := cmd.Flags()
    29  
    30  	flags.BoolVarP(&opts.verbose, "verbose", "v", false, "Show detailed information on space usage")
    31  
    32  	return cmd
    33  }
    34  
    35  func runDiskUsage(dockerCli *command.DockerCli, opts diskUsageOptions) error {
    36  	du, err := dockerCli.Client().DiskUsage(context.Background())
    37  	if err != nil {
    38  		return err
    39  	}
    40  
    41  	duCtx := formatter.DiskUsageContext{
    42  		Context: formatter.Context{
    43  			Output: dockerCli.Out(),
    44  		},
    45  		LayersSize: du.LayersSize,
    46  		Images:     du.Images,
    47  		Containers: du.Containers,
    48  		Volumes:    du.Volumes,
    49  		Verbose:    opts.verbose,
    50  	}
    51  
    52  	duCtx.Write()
    53  
    54  	return nil
    55  }