feat: first steps towards watchable ps output
See coop-cloud/organising#178.
This commit is contained in:
parent
454ee696d6
commit
d4d4da19b7
@ -3,6 +3,7 @@ package app
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"strings"
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
abraFormatter "coopcloud.tech/abra/cli/formatter"
|
abraFormatter "coopcloud.tech/abra/cli/formatter"
|
||||||
"coopcloud.tech/abra/cli/internal"
|
"coopcloud.tech/abra/cli/internal"
|
||||||
@ -15,11 +16,50 @@ import (
|
|||||||
"github.com/urfave/cli/v2"
|
"github.com/urfave/cli/v2"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var watch bool
|
||||||
|
var watchFlag = &cli.BoolFlag{
|
||||||
|
Name: "watch",
|
||||||
|
Aliases: []string{"w"},
|
||||||
|
Value: false,
|
||||||
|
Usage: "Watch status by polling repeatedly",
|
||||||
|
Destination: &watch,
|
||||||
|
}
|
||||||
|
|
||||||
var appPsCommand = &cli.Command{
|
var appPsCommand = &cli.Command{
|
||||||
Name: "ps",
|
Name: "ps",
|
||||||
Usage: "Check app status",
|
Usage: "Check app status",
|
||||||
Aliases: []string{"p"},
|
Aliases: []string{"p"},
|
||||||
|
Flags: []cli.Flag{
|
||||||
|
watchFlag,
|
||||||
|
},
|
||||||
Action: func(c *cli.Context) error {
|
Action: func(c *cli.Context) error {
|
||||||
|
if !watch {
|
||||||
|
showPSOutput(c)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: how do we make this update in-place in an x-platform way?
|
||||||
|
for {
|
||||||
|
showPSOutput(c)
|
||||||
|
time.Sleep(2 * time.Second)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
BashComplete: func(c *cli.Context) {
|
||||||
|
appNames, err := config.GetAppNames()
|
||||||
|
if err != nil {
|
||||||
|
logrus.Warn(err)
|
||||||
|
}
|
||||||
|
if c.NArg() > 0 {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
for _, a := range appNames {
|
||||||
|
fmt.Println(a)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
// showPSOutput renders ps output.
|
||||||
|
func showPSOutput(c *cli.Context) {
|
||||||
app := internal.ValidateApp(c)
|
app := internal.ValidateApp(c)
|
||||||
|
|
||||||
cl, err := client.New(app.Server)
|
cl, err := client.New(app.Server)
|
||||||
@ -56,18 +96,4 @@ var appPsCommand = &cli.Command{
|
|||||||
}
|
}
|
||||||
|
|
||||||
table.Render()
|
table.Render()
|
||||||
return nil
|
|
||||||
},
|
|
||||||
BashComplete: func(c *cli.Context) {
|
|
||||||
appNames, err := config.GetAppNames()
|
|
||||||
if err != nil {
|
|
||||||
logrus.Warn(err)
|
|
||||||
}
|
|
||||||
if c.NArg() > 0 {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
for _, a := range appNames {
|
|
||||||
fmt.Println(a)
|
|
||||||
}
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user