forked from toolshed/abra
feat: support version/upgrade listing
Closes coop-cloud/organising#130.
This commit is contained in:
@ -2,8 +2,10 @@ package app
|
||||
|
||||
import (
|
||||
"sort"
|
||||
"strings"
|
||||
|
||||
abraFormatter "coopcloud.tech/abra/cli/formatter"
|
||||
"coopcloud.tech/abra/pkg/catalogue"
|
||||
"coopcloud.tech/abra/pkg/config"
|
||||
"github.com/sirupsen/logrus"
|
||||
"github.com/urfave/cli/v2"
|
||||
@ -65,10 +67,10 @@ can take some time.
|
||||
}
|
||||
sort.Sort(config.ByServerAndType(apps))
|
||||
|
||||
statuses := map[string]string{}
|
||||
statuses := make(map[string]map[string]string)
|
||||
tableCol := []string{"Server", "Type", "Domain"}
|
||||
if status {
|
||||
tableCol = append(tableCol, "Status")
|
||||
tableCol = append(tableCol, "Status", "Version", "Updates")
|
||||
statuses, err = config.GetAppStatuses(appFiles)
|
||||
if err != nil {
|
||||
logrus.Fatal(err)
|
||||
@ -84,11 +86,38 @@ can take some time.
|
||||
// If type flag is set, check for it, if not, Type == ""
|
||||
tableRow = []string{app.Server, app.Type, app.Domain}
|
||||
if status {
|
||||
if status, ok := statuses[app.StackName()]; ok {
|
||||
tableRow = append(tableRow, status)
|
||||
stackName := app.StackName()
|
||||
if app.Env["STACK_NAME"] != "" {
|
||||
stackName = app.Env["STACK_NAME"]
|
||||
}
|
||||
|
||||
var version string
|
||||
if status, ok := statuses[stackName]; ok {
|
||||
version = status["version"]
|
||||
tableRow = append(tableRow, status["status"], version)
|
||||
} else {
|
||||
tableRow = append(tableRow, "unknown")
|
||||
}
|
||||
|
||||
var newUpdates []string
|
||||
updates, err := catalogue.GetRecipeCatalogueVersions(app.Type)
|
||||
if err != nil {
|
||||
logrus.Fatal(err)
|
||||
}
|
||||
for _, update := range updates {
|
||||
if update != version {
|
||||
newUpdates = append(newUpdates, update)
|
||||
}
|
||||
}
|
||||
if len(newUpdates) == 0 {
|
||||
tableRow = append(tableRow, "none, on latest")
|
||||
} else {
|
||||
// FIXME: jeezus golang why do you not have a list reverse function
|
||||
for i, j := 0, len(newUpdates)-1; i < j; i, j = i+1, j-1 {
|
||||
newUpdates[i], newUpdates[j] = newUpdates[j], newUpdates[i]
|
||||
}
|
||||
tableRow = append(tableRow, strings.Join(newUpdates, "\n"))
|
||||
}
|
||||
}
|
||||
}
|
||||
table.Append(tableRow)
|
||||
|
@ -63,7 +63,7 @@ var appRemoveCommand = &cli.Command{
|
||||
if err != nil {
|
||||
logrus.Fatal(err)
|
||||
}
|
||||
if statuses[app.Name] == "deployed" {
|
||||
if statuses[app.Name]["status"] == "deployed" {
|
||||
logrus.Fatalf("'%s' is still deployed. Run \"abra app %s undeploy\" or pass --force", app.Name, app.Name)
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user