Add machine output for recipe/upgrade

- Normal faff related to calling external libraries with structs thnx go
- Ouputs json now
This commit is contained in:
Cassowary 2023-04-13 09:28:34 -07:00 committed by Gitea
parent 34b274bc52
commit 152c5d4563
1 changed files with 29 additions and 18 deletions

View File

@ -2,6 +2,7 @@ package recipe
import ( import (
"bufio" "bufio"
"encoding/json"
"fmt" "fmt"
"os" "os"
"path" "path"
@ -27,11 +28,11 @@ type imgPin struct {
version tagcmp.Tag version tagcmp.Tag
} }
type upgradeList struct { type anUpgrade struct {
service string Service string `json:"service"`
image string Image string `json:"image"`
tag string Tag string `json:"tag"`
upgradeTags []string UpgradeTags []string `json:"upgrades"`
} }
var recipeUpgradeCommand = cli.Command{ var recipeUpgradeCommand = cli.Command{
@ -63,6 +64,7 @@ You may invoke this command in "wizard" mode and be prompted for input:
internal.PatchFlag, internal.PatchFlag,
internal.MinorFlag, internal.MinorFlag,
internal.MajorFlag, internal.MajorFlag,
internal.MachineReadableFlag,
internal.AllTagsFlag, internal.AllTagsFlag,
}, },
Before: internal.SubCommandBefore, Before: internal.SubCommandBefore,
@ -82,7 +84,7 @@ You may invoke this command in "wizard" mode and be prompted for input:
} }
} }
var upgrades []upgradeList upgradeList := make(map[string]anUpgrade)
// check for versions file and load pinned versions // check for versions file and load pinned versions
versionsPresent := false versionsPresent := false
@ -250,21 +252,21 @@ You may invoke this command in "wizard" mode and be prompted for input:
} }
} }
upgrade := upgradeList{ upgrade := anUpgrade{
service: service.Name, Service: service.Name,
image: image, Image: image,
tag: tag.String(), Tag: tag.String(),
upgradeTags: make([]string, len(compatibleStrings[1:])), UpgradeTags: make([]string, len(compatibleStrings[1:])),
} }
for n, s := range compatibleStrings[1:] { for n, s := range compatibleStrings[1:] {
var sb strings.Builder var sb strings.Builder
if _, err := sb.WriteString(s); err != nil { if _, err := sb.WriteString(s); err != nil {
} }
upgrade.upgradeTags[n] = sb.String() upgrade.UpgradeTags[n] = sb.String()
} }
upgrades = append(upgrades, upgrade) upgradeList[upgrade.Service] = upgrade
if internal.NoInput { if internal.NoInput {
upgradeTag = "skip" upgradeTag = "skip"
@ -297,11 +299,20 @@ You may invoke this command in "wizard" mode and be prompted for input:
} }
if internal.NoInput { if internal.NoInput {
// FIXME handle machine-readable here if internal.MachineReadable {
for _, upgrade := range upgrades { jsonstring, err := json.Marshal(upgradeList)
logrus.Infof("can upgrade service: %s, image: %s, tag: %s ::\n", upgrade.service, upgrade.image, upgrade.tag) if err != nil {
for _, utag := range upgrade.upgradeTags { logrus.Fatal(err)
logrus.Infof(" %s\n", utag) } else {
fmt.Println(string(jsonstring))
}
} else {
for _, upgrade := range upgradeList {
logrus.Infof("can upgrade service: %s, image: %s, tag: %s ::\n", upgrade.Service, upgrade.Image, upgrade.Tag)
for _, utag := range upgrade.UpgradeTags {
logrus.Infof(" %s\n", utag)
}
} }
} }
} }