From 6eee02d90abe6018fa9a62d6e1e960d3fabe37c7 Mon Sep 17 00:00:00 2001 From: decentral1se Date: Sat, 24 Jul 2021 23:18:23 +0200 Subject: [PATCH] feat: add recipe versions command --- TODO.md | 2 +- cli/recipe.go | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/TODO.md b/TODO.md index 8f942a145..6bf143107 100644 --- a/TODO.md +++ b/TODO.md @@ -33,7 +33,7 @@ Disclaimer!: List is WIP - [x] `ls` - [ ] `create` - [ ] `release` - - [ ] `versions` + - [x] `versions` - [ ] `abra upgrade` - [x] `version` - [ ] `doctor` diff --git a/cli/recipe.go b/cli/recipe.go index 31d89e75a..6b2031afc 100644 --- a/cli/recipe.go +++ b/cli/recipe.go @@ -174,10 +174,46 @@ var recipeListCommand = &cli.Command{ }, } +var recipeVersionCommand = &cli.Command{ + Name: "versions", + Usage: "List available versions for ", + ArgsUsage: "", + Action: func(c *cli.Context) error { + recipe := c.Args().First() + if recipe == "" { + cli.ShowSubcommandHelp(c) + return nil + } + + apps, err := ReadApps() + if err != nil { + logrus.Fatal(err) + } + + if app, ok := apps[recipe]; ok { + tableCol := []string{"Version", "Service", "Image", "Digest"} + table := createTable(tableCol) + for version := range app.Versions { + for service := range app.Versions[version] { + meta := app.Versions[version][service] + table.Append([]string{version, service, meta.Image, meta.Digest}) + } + } + table.SetAutoMergeCells(true) + table.Render() + return nil + } + + logrus.Fatalf("'%s' recipe doesn't exist?", recipe) + return nil + }, +} + var RecipeCommand = &cli.Command{ Name: "recipe", HideHelp: true, Subcommands: []*cli.Command{ recipeListCommand, + recipeVersionCommand, }, }