diff --git a/ui/terminal/format.go b/ui/terminal/format.go index 241a1ddf7..539102390 100644 --- a/ui/terminal/format.go +++ b/ui/terminal/format.go @@ -25,6 +25,7 @@ import ( type formatter struct { format string quiet bool + smart bool start time.Time } @@ -32,10 +33,11 @@ type formatter struct { // the terminal in a format similar to Ninja. // format takes nearly all the same options as NINJA_STATUS. // %c is currently unsupported. -func newFormatter(format string, quiet bool) formatter { +func newFormatter(format string, quiet bool, smart bool) formatter { return formatter{ format: format, quiet: quiet, + smart: smart, start: time.Now(), } } @@ -61,8 +63,9 @@ func remainingTimeString(t time.Time) string { func (s formatter) progress(counts status.Counts) string { if s.format == "" { output := fmt.Sprintf("[%3d%% %d/%d", 100*counts.FinishedActions/counts.TotalActions, counts.FinishedActions, counts.TotalActions) - - if !counts.EstimatedTime.IsZero() { + // Not to break parsing logic in the build bot + // TODO(b/313981966): make buildbot more flexible for output format + if s.smart && !counts.EstimatedTime.IsZero() { output += fmt.Sprintf(" %s remaining", remainingTimeString(counts.EstimatedTime)) } output += "] " diff --git a/ui/terminal/smart_status.go b/ui/terminal/smart_status.go index 4575ccfdd..3880b04a8 100644 --- a/ui/terminal/smart_status.go +++ b/ui/terminal/smart_status.go @@ -31,9 +31,8 @@ import ( const tableHeightEnVar = "SOONG_UI_TABLE_HEIGHT" type actionTableEntry struct { - action *status.Action - startTime time.Time - estimatedEndTime time.Time + action *status.Action + startTime time.Time } type smartStatusOutput struct { diff --git a/ui/terminal/status.go b/ui/terminal/status.go index 2ad174fee..810e3c93d 100644 --- a/ui/terminal/status.go +++ b/ui/terminal/status.go @@ -27,9 +27,10 @@ import ( // statusFormat takes nearly all the same options as NINJA_STATUS. // %c is currently unsupported. func NewStatusOutput(w io.Writer, statusFormat string, forceSimpleOutput, quietBuild, forceKeepANSI bool) status.StatusOutput { - formatter := newFormatter(statusFormat, quietBuild) + useSmartStatus := !forceSimpleOutput && isSmartTerminal(w) + formatter := newFormatter(statusFormat, quietBuild, useSmartStatus) - if !forceSimpleOutput && isSmartTerminal(w) { + if useSmartStatus { return NewSmartStatusOutput(w, formatter) } else { return NewSimpleStatusOutput(w, formatter, forceKeepANSI)