package app import ( "context" "strings" abraFormatter "coopcloud.tech/abra/cli/formatter" "coopcloud.tech/abra/cli/internal" "coopcloud.tech/abra/pkg/client" "github.com/docker/cli/cli/command/formatter" "github.com/docker/docker/api/types" "github.com/docker/docker/api/types/filters" "github.com/sirupsen/logrus" "github.com/urfave/cli/v2" ) var appPsCommand = &cli.Command{ Name: "ps", Usage: "Check app status", Aliases: []string{"p"}, Action: func(c *cli.Context) error { app := internal.ValidateApp(c) ctx := context.Background() cl, err := client.New(app.Server) if err != nil { logrus.Fatal(err) } filters := filters.NewArgs() filters.Add("name", app.StackName()) containers, err := cl.ContainerList(ctx, types.ContainerListOptions{Filters: filters}) if err != nil { logrus.Fatal(err) } tableCol := []string{"ID", "Image", "Command", "Created", "Status", "Ports", "Names"} table := abraFormatter.CreateTable(tableCol) for _, container := range containers { tableRow := []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, ","), } table.Append(tableRow) } table.Render() return nil }, }