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).
73 lines
1.5 KiB
Go
73 lines
1.5 KiB
Go
package recipe
|
|
|
|
import (
|
|
"fmt"
|
|
"sort"
|
|
"strconv"
|
|
"strings"
|
|
|
|
"coopcloud.tech/abra/cli/formatter"
|
|
"coopcloud.tech/abra/pkg/recipe"
|
|
"github.com/sirupsen/logrus"
|
|
"github.com/urfave/cli/v2"
|
|
)
|
|
|
|
var pattern string
|
|
var patternFlag = &cli.StringFlag{
|
|
Name: "pattern",
|
|
Value: "",
|
|
Aliases: []string{"p"},
|
|
Usage: "Simple string to filter recipes",
|
|
Destination: &pattern,
|
|
}
|
|
|
|
var recipeListCommand = &cli.Command{
|
|
Name: "list",
|
|
Usage: "List available recipes",
|
|
Aliases: []string{"ls"},
|
|
Flags: []cli.Flag{
|
|
patternFlag,
|
|
},
|
|
Action: func(c *cli.Context) error {
|
|
catl, err := recipe.ReadRecipeCatalogue()
|
|
if err != nil {
|
|
logrus.Fatal(err.Error())
|
|
}
|
|
|
|
recipes := catl.Flatten()
|
|
sort.Sort(recipe.ByRecipeName(recipes))
|
|
|
|
tableCol := []string{"name", "category", "status", "healthcheck", "backups", "email", "tests", "SSO"}
|
|
table := formatter.CreateTable(tableCol)
|
|
|
|
for _, recipe := range recipes {
|
|
tableRow := []string{
|
|
recipe.Name,
|
|
recipe.Category,
|
|
strconv.Itoa(recipe.Features.Status),
|
|
recipe.Features.Healthcheck,
|
|
recipe.Features.Backups,
|
|
recipe.Features.Email,
|
|
recipe.Features.Tests,
|
|
recipe.Features.SSO,
|
|
}
|
|
|
|
if pattern != "" {
|
|
if strings.Contains(recipe.Name, pattern) {
|
|
table.Append(tableRow)
|
|
}
|
|
} else {
|
|
table.Append(tableRow)
|
|
}
|
|
}
|
|
|
|
table.SetCaption(true, fmt.Sprintf("total recipes: %v", len(recipes)))
|
|
|
|
if table.NumLines() > 0 {
|
|
table.Render()
|
|
}
|
|
|
|
return nil
|
|
},
|
|
}
|