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 }