62 lines
1.6 KiB
Go
62 lines
1.6 KiB
Go
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
|
|
},
|
|
}
|