github.com/pdmccormick/importable-docker-buildx@v0.0.0-20240426161518-e47091289030/monitor/commands/list.go (about) 1 package commands 2 3 import ( 4 "context" 5 "fmt" 6 "io" 7 "sort" 8 "text/tabwriter" 9 10 "github.com/docker/buildx/monitor/types" 11 ) 12 13 type ListCmd struct { 14 m types.Monitor 15 16 stdout io.WriteCloser 17 } 18 19 func NewListCmd(m types.Monitor, stdout io.WriteCloser) types.Command { 20 return &ListCmd{m, stdout} 21 } 22 23 func (cm *ListCmd) Info() types.CommandInfo { 24 return types.CommandInfo{ 25 Name: "list", 26 HelpMessage: "list buildx sessions", 27 HelpMessageLong: ` 28 Usage: 29 list 30 `, 31 } 32 } 33 34 func (cm *ListCmd) Exec(ctx context.Context, args []string) error { 35 refs, err := cm.m.List(ctx) 36 if err != nil { 37 return err 38 } 39 sort.Strings(refs) 40 tw := tabwriter.NewWriter(cm.stdout, 1, 8, 1, '\t', 0) 41 fmt.Fprintln(tw, "ID\tCURRENT_SESSION") 42 for _, k := range refs { 43 fmt.Fprintf(tw, "%-20s\t%v\n", k, k == cm.m.AttachedSessionID()) 44 } 45 tw.Flush() 46 return nil 47 }