From 1470637e134d747bb921e2ab213e77e1d3bc3e34 Mon Sep 17 00:00:00 2001 From: Mathias Fredriksson Date: Mon, 30 Sep 2024 12:33:37 +0000 Subject: [PATCH] ensure preexec cleanup runs once --- cmd/envbuilder/main.go | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/cmd/envbuilder/main.go b/cmd/envbuilder/main.go index 720c0c8..0cf8df1 100644 --- a/cmd/envbuilder/main.go +++ b/cmd/envbuilder/main.go @@ -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 == "" { @@ -56,7 +59,7 @@ func envbuilderCmd() serpent.Command { 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() }) @@ -88,7 +91,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) }