package main import ( gocontext "context" "fmt" "os" "text/tabwriter" "github.com/containerd/containerd/api/services/execution" "github.com/urfave/cli" ) var listCommand = cli.Command{ Name: "list", Aliases: []string{"ls"}, Usage: "list containers", Flags: []cli.Flag{ cli.BoolFlag{ Name: "quiet, q", Usage: "print only the container id", }, }, Action: func(context *cli.Context) error { quiet := context.Bool("quiet") containers, err := getExecutionService(context) if err != nil { return err } response, err := containers.List(gocontext.Background(), &execution.ListRequest{}) if err != nil { return err } if quiet { for _, c := range response.Containers { fmt.Println(c.ID) } } else { w := tabwriter.NewWriter(os.Stdout, 10, 1, 3, ' ', 0) fmt.Fprintln(w, "ID\tPID\tSTATUS") for _, c := range response.Containers { if _, err := fmt.Fprintf(w, "%s\t%d\t%s\n", c.ID, c.Pid, c.Status.String(), ); err != nil { return err } if err := w.Flush(); err != nil { return err } } } return nil }, }