Skip to content

Commit 40d0fb1

Browse files
committed
fix some iterator issues
1 parent 6827b2b commit 40d0fb1

File tree

1 file changed

+32
-34
lines changed

1 file changed

+32
-34
lines changed

internal/update/apt/service.go

Lines changed: 32 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -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.
169169
func 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

181180
func 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

229228
func 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

320318
func listUpgradablePackages(ctx context.Context, matcher func(update.UpgradablePackage) bool) ([]update.UpgradablePackage, error) {

0 commit comments

Comments
 (0)