Skip to content

Commit

Permalink
ensure preexec cleanup runs once
Browse files Browse the repository at this point in the history
  • Loading branch information
mafredri committed Sep 30, 2024
1 parent e0f0caf commit 5243969
Showing 1 changed file with 9 additions and 7 deletions.
16 changes: 9 additions & 7 deletions cmd/envbuilder/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,15 @@ func envbuilderCmd() serpent.Command {
Options: o.CLI(),
Handler: func(inv *serpent.Invocation) error {
o.SetDefaults()
var preExec []func()
defer func() { // Ensure cleanup in case of error.
for _, fn := range preExec {
var preExecs []func()
preExec := func() {
for _, fn := range preExecs {
fn()
}
}()
preExecs = nil
}
defer preExec() // Ensure cleanup in case of error.

o.Logger = log.New(os.Stderr, o.Verbose)
if o.CoderAgentURL != "" {
if o.CoderAgentToken == "" {
Expand All @@ -55,8 +58,7 @@ func envbuilderCmd() serpent.Command {
coderLog, closeLogs, err := log.Coder(inv.Context(), u, o.CoderAgentToken)
if err == nil {
o.Logger = log.Wrap(o.Logger, coderLog)
defer closeLogs()
preExec = append(preExec, func() {
preExecs = append(preExecs, func() {
o.Logger(log.LevelInfo, "Closing logs")
closeLogs()
})
Expand Down Expand Up @@ -88,7 +90,7 @@ func envbuilderCmd() serpent.Command {
return nil
}

err := envbuilder.Run(inv.Context(), o, preExec...)
err := envbuilder.Run(inv.Context(), o, preExec)
if err != nil {
o.Logger(log.LevelError, "error: %s", err)
}
Expand Down

0 comments on commit 5243969

Please sign in to comment.