From ff3bf335599a63990841e0b3fba0b28a69d34bc8 Mon Sep 17 00:00:00 2001 From: Josh Deprez Date: Mon, 25 Nov 2024 09:51:24 +1100 Subject: [PATCH] Fix duplicated output when debug is enabled --- internal/shell/shell.go | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/internal/shell/shell.go b/internal/shell/shell.go index ca76b304b3..d32d18da00 100644 --- a/internal/shell/shell.go +++ b/internal/shell/shell.go @@ -566,14 +566,18 @@ func (s *Shell) executeCommand(ctx context.Context, cmdCfg process.Config, stdou } if s.debug { - // Tee output streams to debug logger. - stdOutStreamer := NewLoggerStreamer(s.Logger) - defer stdOutStreamer.Close() - cmdCfg.Stdout = io.MultiWriter(cmdCfg.Stdout, stdOutStreamer) - - stdErrStreamer := NewLoggerStreamer(s.Logger) - defer stdErrStreamer.Close() - cmdCfg.Stderr = io.MultiWriter(cmdCfg.Stderr, stdErrStreamer) + // Display normally-hidden output streams using log streamer. + if cmdCfg.Stdout == io.Discard { + stdOutStreamer := NewLoggerStreamer(s.Logger) + defer stdOutStreamer.Close() + cmdCfg.Stdout = stdOutStreamer + } + + if cmdCfg.Stderr == io.Discard { + stdErrStreamer := NewLoggerStreamer(s.Logger) + defer stdErrStreamer.Close() + cmdCfg.Stderr = stdErrStreamer + } } if s.commandLog != nil {