diff options
Diffstat (limited to 'ui')
-rw-r--r-- | ui/terminal/simple_status.go | 8 | ||||
-rw-r--r-- | ui/terminal/status.go | 4 | ||||
-rw-r--r-- | ui/terminal/status_test.go | 8 |
3 files changed, 12 insertions, 8 deletions
diff --git a/ui/terminal/simple_status.go b/ui/terminal/simple_status.go index 4e8c56804..936b275a1 100644 --- a/ui/terminal/simple_status.go +++ b/ui/terminal/simple_status.go @@ -24,15 +24,17 @@ import ( type simpleStatusOutput struct { writer io.Writer formatter formatter + keepANSI bool } // NewSimpleStatusOutput returns a StatusOutput that represents the // current build status similarly to Ninja's built-in terminal // output. -func NewSimpleStatusOutput(w io.Writer, formatter formatter) status.StatusOutput { +func NewSimpleStatusOutput(w io.Writer, formatter formatter, keepANSI bool) status.StatusOutput { return &simpleStatusOutput{ writer: w, formatter: formatter, + keepANSI: keepANSI, } } @@ -54,7 +56,9 @@ func (s *simpleStatusOutput) FinishAction(result status.ActionResult, counts sta progress := s.formatter.progress(counts) + str output := s.formatter.result(result) - output = string(stripAnsiEscapes([]byte(output))) + if !s.keepANSI { + output = string(stripAnsiEscapes([]byte(output))) + } if output != "" { fmt.Fprint(s.writer, progress, "\n", output) diff --git a/ui/terminal/status.go b/ui/terminal/status.go index d8e739211..2ad174fee 100644 --- a/ui/terminal/status.go +++ b/ui/terminal/status.go @@ -26,12 +26,12 @@ import ( // // statusFormat takes nearly all the same options as NINJA_STATUS. // %c is currently unsupported. -func NewStatusOutput(w io.Writer, statusFormat string, forceSimpleOutput, quietBuild bool) status.StatusOutput { +func NewStatusOutput(w io.Writer, statusFormat string, forceSimpleOutput, quietBuild, forceKeepANSI bool) status.StatusOutput { formatter := newFormatter(statusFormat, quietBuild) if !forceSimpleOutput && isSmartTerminal(w) { return NewSmartStatusOutput(w, formatter) } else { - return NewSimpleStatusOutput(w, formatter) + return NewSimpleStatusOutput(w, formatter, forceKeepANSI) } } diff --git a/ui/terminal/status_test.go b/ui/terminal/status_test.go index aa69dff53..810e31d1b 100644 --- a/ui/terminal/status_test.go +++ b/ui/terminal/status_test.go @@ -94,7 +94,7 @@ func TestStatusOutput(t *testing.T) { t.Run("smart", func(t *testing.T) { smart := &fakeSmartTerminal{termWidth: 40} - stat := NewStatusOutput(smart, "", false, false) + stat := NewStatusOutput(smart, "", false, false, false) tt.calls(stat) stat.Flush() @@ -105,7 +105,7 @@ func TestStatusOutput(t *testing.T) { t.Run("simple", func(t *testing.T) { simple := &bytes.Buffer{} - stat := NewStatusOutput(simple, "", false, false) + stat := NewStatusOutput(simple, "", false, false, false) tt.calls(stat) stat.Flush() @@ -116,7 +116,7 @@ func TestStatusOutput(t *testing.T) { t.Run("force simple", func(t *testing.T) { smart := &fakeSmartTerminal{termWidth: 40} - stat := NewStatusOutput(smart, "", true, false) + stat := NewStatusOutput(smart, "", true, false, false) tt.calls(stat) stat.Flush() @@ -269,7 +269,7 @@ func TestSmartStatusOutputWidthChange(t *testing.T) { os.Setenv(tableHeightEnVar, "") smart := &fakeSmartTerminal{termWidth: 40} - stat := NewStatusOutput(smart, "", false, false) + stat := NewStatusOutput(smart, "", false, false, false) smartStat := stat.(*smartStatusOutput) smartStat.sigwinchHandled = make(chan bool) |