package app import ( "context" "fmt" "strings" abraFormatter "coopcloud.tech/abra/cli/formatter" "coopcloud.tech/abra/cli/internal" "coopcloud.tech/abra/client" "github.com/docker/cli/cli/command/formatter" "github.com/docker/cli/cli/command/idresolver" "github.com/docker/docker/api/types" "github.com/docker/docker/api/types/swarm" "github.com/sirupsen/logrus" "github.com/urfave/cli/v2" ) var appPsCommand = &cli.Command{ Name: "ps", Action: func(c *cli.Context) error { ctx := context.Background() cl, err := client.NewClientWithContext(internal.Context) if err != nil { logrus.Fatal(err) } tasks, err := cl.TaskList(ctx, types.TaskListOptions{}) if err != nil { logrus.Fatal(err) } for _, task := range tasks { resolver := idresolver.New(cl, false) serviceName, err := resolver.Resolve(ctx, swarm.Service{}, task.ServiceID) if err != nil { return err } fmt.Printf("%#v\n", serviceName) } containers, err := cl.ContainerList(ctx, types.ContainerListOptions{}) if err != nil { logrus.Fatal(err) } table := abraFormatter.CreateTable([]string{"ID", "Image", "Command", "Created", "Status", "Ports", "Names"}) var conTable [][]string for _, container := range containers { conRow := []string{ abraFormatter.ShortenID(container.ID), abraFormatter.RemoveSha(container.Image), abraFormatter.Truncate(container.Command), abraFormatter.HumanDuration(container.Created), container.Status, formatter.DisplayablePorts(container.Ports), strings.Join(container.Names, ","), } conTable = append(conTable, conRow) } table.AppendBulk(conTable) table.Render() return nil }, }