forked from toolshed/abra
		
	recipe/upgrade: Refactor upgradability list to make output easier
For future, we can print the struct as JSON.
This commit is contained in:
		| @ -27,6 +27,13 @@ type imgPin struct { | ||||
| 	version tagcmp.Tag | ||||
| } | ||||
|  | ||||
| type upgradeList struct { | ||||
| 	service     string | ||||
| 	image       string | ||||
| 	tag         string | ||||
| 	upgradeTags []string | ||||
| } | ||||
|  | ||||
| var recipeUpgradeCommand = cli.Command{ | ||||
| 	Name:    "upgrade", | ||||
| 	Aliases: []string{"u"}, | ||||
| @ -75,6 +82,8 @@ You may invoke this command in "wizard" mode and be prompted for input: | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		var upgrades []upgradeList | ||||
|  | ||||
| 		// check for versions file and load pinned versions | ||||
| 		versionsPresent := false | ||||
| 		recipeDir := path.Join(config.RECIPES_DIR, recipe.Name) | ||||
| @ -240,11 +249,25 @@ You may invoke this command in "wizard" mode and be prompted for input: | ||||
| 							compatibleStrings = append(compatibleStrings, regVersion) | ||||
| 						} | ||||
| 					} | ||||
| 					if internal.NoInput { | ||||
| 						logrus.Infof("potential upgrades for service: %s, image: %s, tag: %s ::\t", service.Name, image, tag) | ||||
| 						for _, upgradableVersion := range compatibleStrings[1:] { | ||||
| 							logrus.Infof("\t%s\n", upgradableVersion) | ||||
|  | ||||
| 					upgrade := upgradeList{ | ||||
| 						service:     service.Name, | ||||
| 						image:       image, | ||||
| 						tag:         tag.String(), | ||||
| 						upgradeTags: make([]string, len(compatibleStrings[1:])), | ||||
| 					} | ||||
|  | ||||
| 					for n, s := range compatibleStrings[1:] { | ||||
| 						var sb strings.Builder | ||||
| 						if _, err := sb.WriteString(s); err != nil { | ||||
| 						} | ||||
| 						upgrade.upgradeTags[n] = sb.String() | ||||
| 					} | ||||
|  | ||||
| 					upgrades = append(upgrades, upgrade) | ||||
|  | ||||
| 					if internal.NoInput { | ||||
| 						upgradeTag = "skip" | ||||
| 					} else { | ||||
| 						prompt := &survey.Select{ | ||||
| 							Message: msg, | ||||
| @ -267,10 +290,21 @@ You may invoke this command in "wizard" mode and be prompted for input: | ||||
| 					logrus.Infof("tag upgraded from %s to %s for %s", tag.String(), upgradeTag, image) | ||||
| 				} | ||||
| 			} else { | ||||
| 				logrus.Warnf("not upgrading %s, skipping as requested", image) | ||||
| 				if !internal.NoInput { | ||||
| 					logrus.Warnf("not upgrading %s, skipping as requested", image) | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		if internal.NoInput { | ||||
| 			// FIXME handle machine-readable here | ||||
| 			for _, upgrade := range upgrades { | ||||
| 				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) | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 		return nil | ||||
| 	}, | ||||
| } | ||||
|  | ||||
		Reference in New Issue
	
	Block a user