@@ -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,26 @@ 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
+ // Construct a list of upgradeable sauces so the order is deterministic when we list them
137
+ upgradeableSauces := make ([]* recipe.Sauce , 0 , len (latestSauceVersions ))
138
+ for _ , sauce := range sauces {
139
+ if _ , ok := latestSauceVersions [sauce ]; ok {
140
+ upgradeableSauces = append (upgradeableSauces , sauce )
141
+ }
142
+ }
143
+
136
144
if ! opts .Upgrade {
137
- if len (upgrades ) > 0 {
145
+ if len (latestSauceVersions ) > 0 {
138
146
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
+ for _ , sauce := range upgradeableSauces {
148
+ cmd .Printf (" %s upgrade %s:%s\n " , os .Args [0 ], sauce .CheckFrom , latestSauceVersions [ sauce ] )
141
149
}
142
150
cmd .Println ("\n or rerun the command with '--upgrade' flag to upgrade all recipes to the latest version." )
143
151
}
@@ -146,7 +154,7 @@ func runCheck(cmd *cobra.Command, opts checkOptions) error {
146
154
switch {
147
155
case errorsFound :
148
156
exitCode = ExitCodeError
149
- case len (upgrades ) > 0 && opts .UseDetailedExitCode :
157
+ case len (latestSauceVersions ) > 0 && opts .UseDetailedExitCode :
150
158
exitCode = ExitCodeUpdatesAvailable
151
159
default :
152
160
exitCode = ExitCodeOK
@@ -160,9 +168,9 @@ func runCheck(cmd *cobra.Command, opts checkOptions) error {
160
168
161
169
cmd .Println ()
162
170
n := 0
163
- for sauce , version := range upgrades {
171
+ for _ , sauce := range upgradeableSauces {
164
172
err := runUpgrade (cmd , upgradeOptions {
165
- RecipeURL : fmt .Sprintf ("%s:%s" , sauce .CheckFrom , version ),
173
+ RecipeURL : fmt .Sprintf ("%s:%s" , sauce .CheckFrom , latestSauceVersions [ sauce ] ),
166
174
SauceID : sauce .ID .String (),
167
175
ReuseOldValues : true ,
168
176
Common : opts .Common ,
@@ -174,7 +182,7 @@ func runCheck(cmd *cobra.Command, opts checkOptions) error {
174
182
}
175
183
176
184
n ++
177
- if n <= len (upgrades ) {
185
+ if n <= len (latestSauceVersions ) {
178
186
cmd .Print ("\n - - - - - - - - - -\n \n " )
179
187
}
180
188
}
0 commit comments