aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--internal/pkg/exec.go6
1 files changed, 4 insertions, 2 deletions
diff --git a/internal/pkg/exec.go b/internal/pkg/exec.go
index 5c1b399b..bc068d1e 100644
--- a/internal/pkg/exec.go
+++ b/internal/pkg/exec.go
@@ -361,6 +361,7 @@ const (
// scanVerbose prefixes program output for a verbose [message.Msg].
func scanVerbose(
msg message.Msg,
+ cancel context.CancelFunc,
done chan<- struct{},
prefix string,
r io.Reader,
@@ -375,6 +376,7 @@ func scanVerbose(
msg.Verbose(prefix, s.Text())
}
if err := s.Err(); err != nil && !errors.Is(err, os.ErrClosed) {
+ cancel()
msg.Verbose("*"+prefix, err)
}
}
@@ -433,8 +435,8 @@ func (a *execArtifact) cure(f *FContext, hostNet bool) (err error) {
}()
stdoutDone, stderrDone := make(chan struct{}), make(chan struct{})
- go scanVerbose(msg, stdoutDone, "("+a.name+":1)", stdout)
- go scanVerbose(msg, stderrDone, "("+a.name+":2)", stderr)
+ go scanVerbose(msg, cancel, stdoutDone, "("+a.name+":1)", stdout)
+ go scanVerbose(msg, cancel, stderrDone, "("+a.name+":2)", stderr)
defer func() { <-stdoutDone; <-stderrDone }()
}