abra/cli/recipe/version.go

58 lines
1.4 KiB
Go
Raw Normal View History

2021-09-05 20:33:07 +00:00
package recipe
import (
"coopcloud.tech/abra/cli/internal"
2021-12-25 16:12:22 +00:00
"coopcloud.tech/abra/pkg/autocomplete"
2021-12-28 00:24:23 +00:00
"coopcloud.tech/abra/pkg/formatter"
recipePkg "coopcloud.tech/abra/pkg/recipe"
2021-09-05 20:33:07 +00:00
"github.com/sirupsen/logrus"
"github.com/urfave/cli"
2021-09-05 20:33:07 +00:00
)
var recipeVersionCommand = cli.Command{
Name: "versions",
Aliases: []string{"v"},
Usage: "List recipe versions",
ArgsUsage: "<recipe>",
Flags: []cli.Flag{
internal.DebugFlag,
internal.NoInputFlag,
},
Before: internal.SubCommandBefore,
2021-12-25 16:12:22 +00:00
BashComplete: autocomplete.RecipeNameComplete,
2021-09-05 20:33:07 +00:00
Action: func(c *cli.Context) error {
recipe := internal.ValidateRecipe(c)
2021-09-05 20:33:07 +00:00
catalogue, err := recipePkg.ReadRecipeCatalogue()
2021-09-05 20:33:07 +00:00
if err != nil {
logrus.Fatal(err)
}
2021-09-05 23:47:59 +00:00
recipeMeta, ok := catalogue[recipe.Name]
if !ok {
2021-12-25 01:03:09 +00:00
logrus.Fatalf("%s recipe doesn't exist?", recipe.Name)
}
tableCol := []string{"Version", "Service", "Image", "Tag", "Digest"}
table := formatter.CreateTable(tableCol)
2021-12-25 16:12:34 +00:00
for i := len(recipeMeta.Versions) - 1; i >= 0; i-- {
for tag, meta := range recipeMeta.Versions[i] {
for service, serviceMeta := range meta {
table.Append([]string{tag, service, serviceMeta.Image, serviceMeta.Tag, serviceMeta.Digest})
}
2021-09-05 20:33:07 +00:00
}
}
table.SetAutoMergeCells(true)
2021-12-25 16:12:41 +00:00
if table.NumLines() > 0 {
table.Render()
} else {
logrus.Fatalf("%s has no published versions?", recipe.Name)
}
2021-09-05 20:33:07 +00:00
return nil
},
}