@@ -167,24 +167,22 @@ func (s *Service) UpgradePackages(ctx context.Context, names []string) (<-chan u
167167// runDpkgConfigureCommand is need in case an upgrade was interrupted in the middle
168168// and the dpkg database is in an inconsistent state.
169169func runDpkgConfigureCommand (ctx context.Context ) error {
170- dpkgCmd , err := paths .NewProcess (nil , "sudo" , "dpkg" , "--configure" , "-a" )
170+ cmd , err := paths .NewProcess (nil , "sudo" , "dpkg" , "--configure" , "-a" )
171171 if err != nil {
172172 return err
173173 }
174- out , err := dpkgCmd .RunAndCaptureCombinedOutput (ctx )
175- if err != nil {
174+ if out , err := cmd .RunAndCaptureCombinedOutput (ctx ); err != nil {
176175 return fmt .Errorf ("error running dpkg configure command: %w: %s" , err , out )
177176 }
178177 return nil
179178}
180179
181180func runUpdateCommand (ctx context.Context ) error {
182- updateCmd , err := paths .NewProcess (nil , "sudo" , "apt-get" , "update" )
181+ cmd , err := paths .NewProcess (nil , "sudo" , "apt-get" , "update" )
183182 if err != nil {
184183 return err
185184 }
186- out , err := updateCmd .RunAndCaptureCombinedOutput (ctx )
187- if err != nil {
185+ if out , err := cmd .RunAndCaptureCombinedOutput (ctx ); err != nil {
188186 return fmt .Errorf ("error running apt-get update command: %w: %s" , err , out )
189187 }
190188 return nil
@@ -203,23 +201,24 @@ func runUpgradeCommand(ctx context.Context, names []string) iter.Seq2[string, er
203201 args = append (args , names ... )
204202
205203 return func (yield func (string , error ) bool ) {
206- upgradeCmd , err := paths .NewProcess (env , args ... )
204+ cmd , err := paths .NewProcess (env , args ... )
207205 if err != nil {
208206 _ = yield ("" , err )
209207 return
210208 }
209+
211210 stdout := orchestrator .NewCallbackWriter (func (line string ) {
212211 if ! yield (line , nil ) {
213- err := upgradeCmd .Kill ()
214- if err != nil {
212+ if err := cmd .Kill (); err != nil {
215213 slog .Error ("Failed to kill upgrade command" , slog .String ("error" , err .Error ()))
216214 }
217- return
218215 }
219216 })
220- upgradeCmd .RedirectStderrTo (stdout )
221- upgradeCmd .RedirectStdoutTo (stdout )
222- if err := upgradeCmd .RunWithinContext (ctx ); err != nil {
217+ cmd .RedirectStderrTo (stdout )
218+ cmd .RedirectStdoutTo (stdout )
219+
220+ if err := cmd .RunWithinContext (ctx ); err != nil {
221+ _ = yield ("" , err )
223222 return
224223 }
225224 }
@@ -228,18 +227,25 @@ func runUpgradeCommand(ctx context.Context, names []string) iter.Seq2[string, er
228227
229228func runAptCleanCommand (ctx context.Context ) iter.Seq2 [string , error ] {
230229 return func (yield func (string , error ) bool ) {
231- cleanCmd , err := paths .NewProcess (nil , "sudo" , "apt-get" , "clean" , "-y" )
230+ cmd , err := paths .NewProcess (nil , "sudo" , "apt-get" , "clean" , "-y" )
232231 if err != nil {
233232 _ = yield ("" , err )
234233 return
235234 }
235+
236236 stdout := orchestrator .NewCallbackWriter (func (line string ) {
237- _ = yield (line , nil )
237+ if ! yield (line , nil ) {
238+ if err := cmd .Kill (); err != nil {
239+ slog .Error ("Failed to kill apt clean command" , slog .String ("error" , err .Error ()))
240+ }
241+ }
238242 })
239- cleanCmd .RedirectStderrTo (stdout )
240- cleanCmd .RedirectStdoutTo (stdout )
241- if err := cleanCmd .RunWithinContext (ctx ); err != nil {
243+ cmd .RedirectStderrTo (stdout )
244+ cmd .RedirectStdoutTo (stdout )
245+
246+ if err := cmd .RunWithinContext (ctx ); err != nil {
242247 _ = yield ("" , err )
248+ return
243249 }
244250 }
245251}
@@ -251,19 +257,19 @@ func pullDockerImages(ctx context.Context) iter.Seq2[string, error] {
251257 _ = yield ("" , err )
252258 return
253259 }
260+
254261 stdout := orchestrator .NewCallbackWriter (func (line string ) {
255262 if ! yield (line , nil ) {
256- err := cmd .Kill ()
257- if err != nil {
263+ if err := cmd .Kill (); err != nil {
258264 slog .Error ("Failed to kill 'arduino-app-cli system init' command" , slog .String ("error" , err .Error ()))
259265 }
260- return
261266 }
262267 })
263268 cmd .RedirectStderrTo (stdout )
264269 cmd .RedirectStdoutTo (stdout )
265- err = cmd .RunWithinContext (ctx )
266- if err != nil {
270+
271+ if err = cmd .RunWithinContext (ctx ); err != nil {
272+ _ = yield ("" , err )
267273 return
268274 }
269275 }
@@ -280,19 +286,15 @@ func cleanupDockerContainers(ctx context.Context) iter.Seq2[string, error] {
280286
281287 stdout := orchestrator .NewCallbackWriter (func (line string ) {
282288 if ! yield (line , nil ) {
283- err := cmd .Kill ()
284- if err != nil {
289+ if err := cmd .Kill (); err != nil {
285290 slog .Error ("Failed to kill 'arduino-app-cli system cleanup' command" , slog .String ("error" , err .Error ()))
286291 }
287- return
288292 }
289293 })
290-
291294 cmd .RedirectStderrTo (stdout )
292295 cmd .RedirectStdoutTo (stdout )
293296
294- err = cmd .RunWithinContext (ctx )
295- if err != nil {
297+ if err = cmd .RunWithinContext (ctx ); err != nil {
296298 _ = yield ("" , err )
297299 return
298300 }
@@ -310,11 +312,7 @@ func restartServices(ctx context.Context) error {
310312 if err != nil {
311313 return err
312314 }
313- err = needRestartCmd .RunWithinContext (ctx )
314- if err != nil {
315- return err
316- }
317- return nil
315+ return needRestartCmd .RunWithinContext (ctx )
318316}
319317
320318func listUpgradablePackages (ctx context.Context , matcher func (update.UpgradablePackage ) bool ) ([]update.UpgradablePackage , error ) {
0 commit comments