@@ -237,50 +237,49 @@ func setOnTarget(cmd *cobra.Command, myTarget target.Target, flagGroups []flagGr
237237 return
238238 }
239239 channelSetComplete := make (chan setOutput )
240- var successMessages []string
241- var errorMessages []string
240+ var statusMessages []string
242241 _ = statusUpdate (myTarget .GetName (), "updating configuration" )
243242 for _ , group := range flagGroups {
244243 for _ , flag := range group .flags {
245244 if flag .HasSetFunc () && cmd .Flags ().Lookup (flag .GetName ()).Changed {
246- successMessages = append (successMessages , fmt .Sprintf ("set %s to %s" , flag .GetName (), flag .GetValueAsString ()))
247- errorMessages = append (errorMessages , fmt .Sprintf ("failed to set %s to %s" , flag .GetName (), flag .GetValueAsString ()))
245+ successMessage := fmt .Sprintf ("set %s to %s" , flag .GetName (), flag .GetValueAsString ())
246+ errorMessage := fmt .Sprintf ("failed to set %s to %s" , flag .GetName (), flag .GetValueAsString ())
247+ var out setOutput
248248 switch flag .GetType () {
249249 case "int" :
250250 if flag .intSetFunc != nil {
251251 value , _ := cmd .Flags ().GetInt (flag .GetName ())
252- go flag .intSetFunc (value , myTarget , localTempDir , channelSetComplete , len (successMessages )- 1 )
252+ go flag .intSetFunc (value , myTarget , localTempDir , channelSetComplete , 0 )
253+ out = <- channelSetComplete
253254 }
254255 case "float64" :
255256 if flag .floatSetFunc != nil {
256257 value , _ := cmd .Flags ().GetFloat64 (flag .GetName ())
257- go flag .floatSetFunc (value , myTarget , localTempDir , channelSetComplete , len (successMessages )- 1 )
258+ go flag .floatSetFunc (value , myTarget , localTempDir , channelSetComplete , 0 )
259+ out = <- channelSetComplete
258260 }
259261 case "string" :
260262 if flag .stringSetFunc != nil {
261263 value , _ := cmd .Flags ().GetString (flag .GetName ())
262- go flag .stringSetFunc (value , myTarget , localTempDir , channelSetComplete , len (successMessages )- 1 )
264+ go flag .stringSetFunc (value , myTarget , localTempDir , channelSetComplete , 0 )
265+ out = <- channelSetComplete
263266 }
264267 case "bool" :
265268 if flag .boolSetFunc != nil {
266269 value , _ := cmd .Flags ().GetBool (flag .GetName ())
267- go flag .boolSetFunc (value , myTarget , localTempDir , channelSetComplete , len (successMessages )- 1 )
270+ go flag .boolSetFunc (value , myTarget , localTempDir , channelSetComplete , 0 )
271+ out = <- channelSetComplete
268272 }
269273 }
274+ if out .err != nil {
275+ slog .Error (out .err .Error ())
276+ statusMessages = append (statusMessages , errorMessage )
277+ } else {
278+ statusMessages = append (statusMessages , successMessage )
279+ }
270280 }
271281 }
272282 }
273- // wait for all set goroutines to finish
274- statusMessages := []string {}
275- for range successMessages {
276- out := <- channelSetComplete
277- if out .err != nil {
278- slog .Error (out .err .Error ())
279- statusMessages = append (statusMessages , errorMessages [out .goRoutineID ])
280- } else {
281- statusMessages = append (statusMessages , successMessages [out .goRoutineID ])
282- }
283- }
284283 statusMessage := fmt .Sprintf ("configuration update complete: %s" , strings .Join (statusMessages , ", " ))
285284 slog .Info (statusMessage , slog .String ("target" , myTarget .GetName ()))
286285 _ = statusUpdate (myTarget .GetName (), statusMessage )
0 commit comments