github.com/sld880311/docker@v0.0.0-20200524143708-d5593973a475/cli/command/checkpoint/list.go (about) 1 package checkpoint 2 3 import ( 4 "fmt" 5 "text/tabwriter" 6 7 "golang.org/x/net/context" 8 9 "github.com/docker/docker/api/types" 10 "github.com/docker/docker/cli" 11 "github.com/docker/docker/cli/command" 12 "github.com/spf13/cobra" 13 ) 14 15 type listOptions struct { 16 checkpointDir string 17 } 18 19 func newListCommand(dockerCli *command.DockerCli) *cobra.Command { 20 var opts listOptions 21 22 cmd := &cobra.Command{ 23 Use: "ls [OPTIONS] CONTAINER", 24 Aliases: []string{"list"}, 25 Short: "List checkpoints for a container", 26 Args: cli.ExactArgs(1), 27 RunE: func(cmd *cobra.Command, args []string) error { 28 return runList(dockerCli, args[0], opts) 29 }, 30 } 31 32 flags := cmd.Flags() 33 flags.StringVarP(&opts.checkpointDir, "checkpoint-dir", "", "", "Use a custom checkpoint storage directory") 34 35 return cmd 36 37 } 38 39 func runList(dockerCli *command.DockerCli, container string, opts listOptions) error { 40 client := dockerCli.Client() 41 42 listOpts := types.CheckpointListOptions{ 43 CheckpointDir: opts.checkpointDir, 44 } 45 46 checkpoints, err := client.CheckpointList(context.Background(), container, listOpts) 47 if err != nil { 48 return err 49 } 50 51 w := tabwriter.NewWriter(dockerCli.Out(), 20, 1, 3, ' ', 0) 52 fmt.Fprintf(w, "CHECKPOINT NAME") 53 fmt.Fprintf(w, "\n") 54 55 for _, checkpoint := range checkpoints { 56 fmt.Fprintf(w, "%s\t", checkpoint.Name) 57 fmt.Fprint(w, "\n") 58 } 59 60 w.Flush() 61 return nil 62 }