@@ -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 == "" {
@@ -55,8 +58,7 @@ func envbuilderCmd() serpent.Command {
5558 coderLog , closeLogs , err := log .Coder (inv .Context (), u , o .CoderAgentToken )
5659 if err == nil {
5760 o .Logger = log .Wrap (o .Logger , coderLog )
58- defer closeLogs ()
59- preExec = append (preExec , func () {
61+ preExecs = append (preExecs , func () {
6062 o .Logger (log .LevelInfo , "Closing logs" )
6163 closeLogs ()
6264 })
@@ -88,7 +90,7 @@ func envbuilderCmd() serpent.Command {
8890 return nil
8991 }
9092
91- err := envbuilder .Run (inv .Context (), o , preExec ... )
93+ err := envbuilder .Run (inv .Context (), o , preExec )
9294 if err != nil {
9395 o .Logger (log .LevelError , "error: %s" , err )
9496 }
0 commit comments