Catalogue package had to be merged into the recipe package due to too many circular import errors. Also, use https url for cloning, assume folks don't have ssh setup by default (the whole reason for the refactor).
53 lines
1.3 KiB
Go
53 lines
1.3 KiB
Go
package recipe
|
|
|
|
import (
|
|
"coopcloud.tech/abra/cli/formatter"
|
|
"coopcloud.tech/abra/cli/internal"
|
|
"coopcloud.tech/abra/pkg/autocomplete"
|
|
recipePkg "coopcloud.tech/abra/pkg/recipe"
|
|
"github.com/sirupsen/logrus"
|
|
"github.com/urfave/cli/v2"
|
|
)
|
|
|
|
var recipeVersionCommand = &cli.Command{
|
|
Name: "versions",
|
|
Usage: "List recipe versions",
|
|
Aliases: []string{"v"},
|
|
ArgsUsage: "<recipe>",
|
|
BashComplete: autocomplete.RecipeNameComplete,
|
|
Action: func(c *cli.Context) error {
|
|
recipe := internal.ValidateRecipe(c)
|
|
|
|
catalogue, err := recipePkg.ReadRecipeCatalogue()
|
|
if err != nil {
|
|
logrus.Fatal(err)
|
|
}
|
|
|
|
recipeMeta, ok := catalogue[recipe.Name]
|
|
if !ok {
|
|
logrus.Fatalf("%s recipe doesn't exist?", recipe.Name)
|
|
}
|
|
|
|
tableCol := []string{"Version", "Service", "Image", "Tag", "Digest"}
|
|
table := formatter.CreateTable(tableCol)
|
|
|
|
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})
|
|
}
|
|
}
|
|
}
|
|
|
|
table.SetAutoMergeCells(true)
|
|
|
|
if table.NumLines() > 0 {
|
|
table.Render()
|
|
} else {
|
|
logrus.Fatalf("%s has no published versions?", recipe.Name)
|
|
}
|
|
|
|
return nil
|
|
},
|
|
}
|