From e412c2df0a2f8deeab2698dc353f34d73b92777b Mon Sep 17 00:00:00 2001 From: chelkyl <14041823+chelkyl@users.noreply.github.com> Date: Thu, 31 Mar 2022 17:29:40 -0500 Subject: [PATCH 1/6] fix: output line should reflect actual behavior --- cli/internal/run/run.go | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/cli/internal/run/run.go b/cli/internal/run/run.go index 8d09b10b96813..d5bdf16ef6602 100644 --- a/cli/internal/run/run.go +++ b/cli/internal/run/run.go @@ -779,7 +779,7 @@ func (c *RunCommand) executeDryRun(engine *core.Scheduler, g *completeGraph, rs } // Replay logs will try to replay logs back to the stdout -func replayLogs(logger hclog.Logger, prefixUi cli.Ui, runOptions *RunOptions, logFileName, hash string, wg *sync.WaitGroup, silent bool, outputLogsMode LogsMode) { +func replayLogs(logger hclog.Logger, prefixUi cli.Ui, runOptions *RunOptions, logFileName, hash string, logPrefix string, wg *sync.WaitGroup, silent bool, outputLogsMode LogsMode) { defer wg.Done() logger.Debug("start replaying logs") f, err := os.Open(filepath.Join(runOptions.cwd, logFileName)) @@ -789,12 +789,10 @@ func replayLogs(logger hclog.Logger, prefixUi cli.Ui, runOptions *RunOptions, lo } defer f.Close() if outputLogsMode != NoLogs { - scan := bufio.NewScanner(f) if outputLogsMode == HashLogs { - //Writing to Stdout only the "cache hit, replaying output" line - scan.Scan() - prefixUi.Output(ui.StripAnsi(string(scan.Bytes()))) + prefixUi.Output(fmt.Sprintf("%scache hit, suppressing output %s", logPrefix, ui.Dim(hash))) } else { + scan := bufio.NewScanner(f) for scan.Scan() { prefixUi.Output(ui.StripAnsi(string(scan.Bytes()))) //Writing to Stdout } @@ -897,7 +895,7 @@ func (e *execContext) exec(pt *packageTask) error { } else if hit { if e.rs.Opts.stream && fs.FileExists(filepath.Join(e.rs.Opts.cwd, logFileName)) { e.logReplayWaitGroup.Add(1) - go replayLogs(targetLogger, e.ui, e.rs.Opts, logFileName, hash, &e.logReplayWaitGroup, false, e.rs.Opts.cacheHitLogsMode) + go replayLogs(targetLogger, e.ui, e.rs.Opts, logFileName, hash, actualPrefix, &e.logReplayWaitGroup, false, e.rs.Opts.cacheHitLogsMode) } targetLogger.Debug("done", "status", "complete", "duration", time.Since(cmdTime)) tracer(TargetCached, nil) From 6ba24cf13c0d236f5b6fac8b80f6e44a2b8ee28d Mon Sep 17 00:00:00 2001 From: chelkyl <14041823+chelkyl@users.noreply.github.com> Date: Tue, 5 Apr 2022 20:08:26 -0500 Subject: [PATCH 2/6] fix: update expected output string in e2e tests --- cli/scripts/e2e/e2e.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cli/scripts/e2e/e2e.ts b/cli/scripts/e2e/e2e.ts index 1ed3b901efe8a..ec1c902e68f6d 100644 --- a/cli/scripts/e2e/e2e.ts +++ b/cli/scripts/e2e/e2e.ts @@ -280,7 +280,7 @@ function runSmokeTests( assert.ok( sinceCommandSecondRunOutput.includes( - `b:build: cache hit, replaying output ${getHashFromOutput( + `b:build: cache hit, suppressing output ${getHashFromOutput( sinceCommandSecondRunOutput, "b#build" )}` @@ -290,7 +290,7 @@ function runSmokeTests( assert.ok( sinceCommandSecondRunOutput.includes( - `a:test: cache hit, replaying output ${getHashFromOutput( + `a:test: cache hit, suppressing output ${getHashFromOutput( sinceCommandSecondRunOutput, "a#test" )}` From 329bae5ee882ca03c68e75377077fb50420298e1 Mon Sep 17 00:00:00 2001 From: chelkyl <14041823+chelkyl@users.noreply.github.com> Date: Wed, 6 Apr 2022 16:16:48 -0500 Subject: [PATCH 3/6] refactor: simplify replayLogs function by extracting output logs mode logic out --- cli/internal/run/run.go | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/cli/internal/run/run.go b/cli/internal/run/run.go index 1c31e5e96f46b..5c0b1dca6fc6b 100644 --- a/cli/internal/run/run.go +++ b/cli/internal/run/run.go @@ -796,7 +796,7 @@ func (c *RunCommand) executeDryRun(engine *core.Scheduler, g *completeGraph, rs } // Replay logs will try to replay logs back to the stdout -func replayLogs(logger hclog.Logger, prefixUi cli.Ui, runOptions *RunOptions, logFileName, hash string, logPrefix string, wg *sync.WaitGroup, silent bool, outputLogsMode LogsMode) { +func replayLogs(logger hclog.Logger, prefixUi cli.Ui, runOptions *RunOptions, logFileName, hash string, wg *sync.WaitGroup, silent bool) { defer wg.Done() logger.Debug("start replaying logs") f, err := os.Open(filepath.Join(runOptions.cwd, logFileName)) @@ -805,15 +805,9 @@ func replayLogs(logger hclog.Logger, prefixUi cli.Ui, runOptions *RunOptions, lo logger.Error(fmt.Sprintf("error reading logs: %v", err.Error())) } defer f.Close() - if outputLogsMode != NoLogs { - if outputLogsMode == HashLogs { - prefixUi.Output(fmt.Sprintf("%scache hit, suppressing output %s", logPrefix, ui.Dim(hash))) - } else { - scan := bufio.NewScanner(f) - for scan.Scan() { - prefixUi.Output(ui.StripAnsi(string(scan.Bytes()))) //Writing to Stdout - } - } + scan := bufio.NewScanner(f) + for scan.Scan() { + prefixUi.Output(ui.StripAnsi(string(scan.Bytes()))) //Writing to Stdout } logger.Debug("finish replaying logs") } @@ -910,9 +904,16 @@ func (e *execContext) exec(pt *packageTask) error { if err != nil { targetUi.Error(fmt.Sprintf("error fetching from cache: %s", err)) } else if hit { - if e.rs.Opts.stream && fs.FileExists(filepath.Join(e.rs.Opts.cwd, logFileName)) { - e.logReplayWaitGroup.Add(1) - go replayLogs(targetLogger, e.ui, e.rs.Opts, logFileName, hash, actualPrefix, &e.logReplayWaitGroup, false, e.rs.Opts.cacheHitLogsMode) + switch e.rs.Opts.cacheHitLogsMode { + case HashLogs: + targetUi.Output(fmt.Sprintf("cache hit, suppressing output %s", ui.Dim(hash))) + case FullLogs: + if e.rs.Opts.stream && fs.FileExists(filepath.Join(e.rs.Opts.cwd, logFileName)) { + e.logReplayWaitGroup.Add(1) + go replayLogs(targetLogger, e.ui, e.rs.Opts, logFileName, hash, &e.logReplayWaitGroup, false) + } + default: + // NoLogs, do not output anything } targetLogger.Debug("done", "status", "complete", "duration", time.Since(cmdTime)) tracer(TargetCached, nil) From eddba829d3addd7325669ce2b91fc6c9e75b016b Mon Sep 17 00:00:00 2001 From: chelkyl <14041823+chelkyl@users.noreply.github.com> Date: Wed, 6 Apr 2022 17:24:33 -0500 Subject: [PATCH 4/6] fix: missed merge change from feat(colors): add options for forcing color/no-color --- cli/internal/run/run.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/internal/run/run.go b/cli/internal/run/run.go index 5c0b1dca6fc6b..ad0c5a4877d3a 100644 --- a/cli/internal/run/run.go +++ b/cli/internal/run/run.go @@ -807,7 +807,7 @@ func replayLogs(logger hclog.Logger, prefixUi cli.Ui, runOptions *RunOptions, lo defer f.Close() scan := bufio.NewScanner(f) for scan.Scan() { - prefixUi.Output(ui.StripAnsi(string(scan.Bytes()))) //Writing to Stdout + prefixUi.Output(string(scan.Bytes())) //Writing to Stdout } logger.Debug("finish replaying logs") } From 512a9f769cd92783b4517a3305b7badf4293e70b Mon Sep 17 00:00:00 2001 From: chelkyl <14041823+chelkyl@users.noreply.github.com> Date: Wed, 6 Apr 2022 20:54:00 -0500 Subject: [PATCH 5/6] feat: remove unused silent param --- cli/internal/run/run.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cli/internal/run/run.go b/cli/internal/run/run.go index ad0c5a4877d3a..7af223ef9fc9a 100644 --- a/cli/internal/run/run.go +++ b/cli/internal/run/run.go @@ -796,11 +796,11 @@ func (c *RunCommand) executeDryRun(engine *core.Scheduler, g *completeGraph, rs } // Replay logs will try to replay logs back to the stdout -func replayLogs(logger hclog.Logger, prefixUi cli.Ui, runOptions *RunOptions, logFileName, hash string, wg *sync.WaitGroup, silent bool) { +func replayLogs(logger hclog.Logger, prefixUi cli.Ui, runOptions *RunOptions, logFileName, hash string, wg *sync.WaitGroup) { defer wg.Done() logger.Debug("start replaying logs") f, err := os.Open(filepath.Join(runOptions.cwd, logFileName)) - if err != nil && !silent { + if err != nil { prefixUi.Warn(fmt.Sprintf("error reading logs: %v", err)) logger.Error(fmt.Sprintf("error reading logs: %v", err.Error())) } @@ -910,7 +910,7 @@ func (e *execContext) exec(pt *packageTask) error { case FullLogs: if e.rs.Opts.stream && fs.FileExists(filepath.Join(e.rs.Opts.cwd, logFileName)) { e.logReplayWaitGroup.Add(1) - go replayLogs(targetLogger, e.ui, e.rs.Opts, logFileName, hash, &e.logReplayWaitGroup, false) + go replayLogs(targetLogger, e.ui, e.rs.Opts, logFileName, hash, &e.logReplayWaitGroup) } default: // NoLogs, do not output anything From 896373bf81488609e0f233017b45330823bcbfb6 Mon Sep 17 00:00:00 2001 From: chelkyl <14041823+chelkyl@users.noreply.github.com> Date: Wed, 6 Apr 2022 21:11:03 -0500 Subject: [PATCH 6/6] feat: rename prefixUi to reflect not prefixed --- cli/internal/run/run.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cli/internal/run/run.go b/cli/internal/run/run.go index 7af223ef9fc9a..307b8ca4aa1b4 100644 --- a/cli/internal/run/run.go +++ b/cli/internal/run/run.go @@ -796,18 +796,18 @@ func (c *RunCommand) executeDryRun(engine *core.Scheduler, g *completeGraph, rs } // Replay logs will try to replay logs back to the stdout -func replayLogs(logger hclog.Logger, prefixUi cli.Ui, runOptions *RunOptions, logFileName, hash string, wg *sync.WaitGroup) { +func replayLogs(logger hclog.Logger, output cli.Ui, runOptions *RunOptions, logFileName, hash string, wg *sync.WaitGroup) { defer wg.Done() logger.Debug("start replaying logs") f, err := os.Open(filepath.Join(runOptions.cwd, logFileName)) if err != nil { - prefixUi.Warn(fmt.Sprintf("error reading logs: %v", err)) + output.Warn(fmt.Sprintf("error reading logs: %v", err)) logger.Error(fmt.Sprintf("error reading logs: %v", err.Error())) } defer f.Close() scan := bufio.NewScanner(f) for scan.Scan() { - prefixUi.Output(string(scan.Bytes())) //Writing to Stdout + output.Output(string(scan.Bytes())) //Writing to Stdout } logger.Debug("finish replaying logs") }