@@ -117,7 +117,7 @@ func runCheck(cmd *cobra.Command, opts checkOptions) error {
117
117
cmd .Println ("Checking for new versions..." )
118
118
119
119
errorsFound := false
120
- upgrades := make (map [* recipe.Sauce ]string )
120
+ latestSauceVersions := make (map [* recipe.Sauce ]string )
121
121
for _ , sauce := range sauces {
122
122
versions , err := recipeutil .CheckForUpdates (sauce , opts .OCIRepository )
123
123
if err != nil {
@@ -126,18 +126,28 @@ func runCheck(cmd *cobra.Command, opts checkOptions) error {
126
126
127
127
} else if len (versions ) > 0 {
128
128
cmd .Printf ("🔄 %s: new versions found: %s\n " , sauce .Recipe .Name , strings .Join (versions , ", " ))
129
- upgrades [sauce ] = versions [len (versions )- 1 ]
129
+ latestSauceVersions [sauce ] = versions [len (versions )- 1 ]
130
130
131
131
} else {
132
132
cmd .Printf ("👍 %s: no new versions found\n " , sauce .Recipe .Name )
133
133
}
134
134
}
135
135
136
+ cmd .Println ()
137
+
138
+ // Construct a list of upgradeable sauces so the order is deterministic when we list them
139
+ upgradeableSauces := make ([]* recipe.Sauce , 0 , len (latestSauceVersions ))
140
+ for _ , sauce := range sauces {
141
+ if _ , ok := latestSauceVersions [sauce ]; ok {
142
+ upgradeableSauces = append (upgradeableSauces , sauce )
143
+ }
144
+ }
145
+
136
146
if ! opts .Upgrade {
137
- if len (upgrades ) > 0 {
138
- cmd .Println ("\n To upgrade recipes to the latest version run:" )
139
- for sauce , version := range upgrades {
140
- cmd .Printf (" %s upgrade %s:%s\n " , os .Args [0 ], sauce .CheckFrom , version )
147
+ if len (latestSauceVersions ) > 0 {
148
+ cmd .Println ("To upgrade recipes to the latest version run:" )
149
+ for _ , sauce := range upgradeableSauces {
150
+ cmd .Printf (" %s upgrade %s:%s\n " , os .Args [0 ], sauce .CheckFrom , latestSauceVersions [ sauce ] )
141
151
}
142
152
cmd .Println ("\n or rerun the command with '--upgrade' flag to upgrade all recipes to the latest version." )
143
153
}
@@ -146,7 +156,7 @@ func runCheck(cmd *cobra.Command, opts checkOptions) error {
146
156
switch {
147
157
case errorsFound :
148
158
exitCode = ExitCodeError
149
- case len (upgrades ) > 0 && opts .UseDetailedExitCode :
159
+ case len (latestSauceVersions ) > 0 && opts .UseDetailedExitCode :
150
160
exitCode = ExitCodeUpdatesAvailable
151
161
default :
152
162
exitCode = ExitCodeOK
@@ -158,11 +168,10 @@ func runCheck(cmd *cobra.Command, opts checkOptions) error {
158
168
return nil
159
169
}
160
170
161
- cmd .Println ()
162
171
n := 0
163
- for sauce , version := range upgrades {
172
+ for _ , sauce := range upgradeableSauces {
164
173
err := runUpgrade (cmd , upgradeOptions {
165
- RecipeURL : fmt .Sprintf ("%s:%s" , sauce .CheckFrom , version ),
174
+ RecipeURL : fmt .Sprintf ("%s:%s" , sauce .CheckFrom , latestSauceVersions [ sauce ] ),
166
175
SauceID : sauce .ID .String (),
167
176
ReuseOldValues : true ,
168
177
Common : opts .Common ,
@@ -174,7 +183,7 @@ func runCheck(cmd *cobra.Command, opts checkOptions) error {
174
183
}
175
184
176
185
n ++
177
- if n <= len (upgrades ) {
186
+ if n <= len (latestSauceVersions ) {
178
187
cmd .Print ("\n - - - - - - - - - -\n \n " )
179
188
}
180
189
}
0 commit comments