Skip to content

Commit 1470637

Browse files
committed
ensure preexec cleanup runs once
1 parent e0f0caf commit 1470637

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

cmd/envbuilder/main.go

+9-6
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,15 @@ func envbuilderCmd() serpent.Command {
3737
Options: o.CLI(),
3838
Handler: func(inv *serpent.Invocation) error {
3939
o.SetDefaults()
40-
var preExec []func()
41-
defer func() { // Ensure cleanup in case of error.
42-
for _, fn := range preExec {
40+
var preExecs []func()
41+
preExec := func() {
42+
for _, fn := range preExecs {
4343
fn()
4444
}
45-
}()
45+
preExecs = nil
46+
}
47+
defer preExec() // Ensure cleanup in case of error.
48+
4649
o.Logger = log.New(os.Stderr, o.Verbose)
4750
if o.CoderAgentURL != "" {
4851
if o.CoderAgentToken == "" {
@@ -56,7 +59,7 @@ func envbuilderCmd() serpent.Command {
5659
if err == nil {
5760
o.Logger = log.Wrap(o.Logger, coderLog)
5861
defer closeLogs()
59-
preExec = append(preExec, func() {
62+
preExecs = append(preExecs, func() {
6063
o.Logger(log.LevelInfo, "Closing logs")
6164
closeLogs()
6265
})
@@ -88,7 +91,7 @@ func envbuilderCmd() serpent.Command {
8891
return nil
8992
}
9093

91-
err := envbuilder.Run(inv.Context(), o, preExec...)
94+
err := envbuilder.Run(inv.Context(), o, preExec)
9295
if err != nil {
9396
o.Logger(log.LevelError, "error: %s", err)
9497
}

0 commit comments

Comments
 (0)