feat: support version/upgrade listing

Closes coop-cloud/organising#130.
This commit is contained in:
2021-10-08 09:51:47 +02:00
parent 98ffc210e1
commit dde8afcd43
6 changed files with 89 additions and 34 deletions

View File

@ -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)

View File

@ -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)
}
}