Move all status output to stdout
I've noticed a few instances of interleaved status messages in between
lines in a terminal/Writer.Print call on our build servers. Since
there's a lock protecting everything we write, I've got to assume this
is a stdout vs stderr problem. Ninja had always been outputing to
stdout, except for error messages, which are now marked with FAILED:
like failed actions.
Test: m blueprint_tools
Test: m missing
Change-Id: Idf8320d40694abf212c902c63a9703e4440ffb7a
diff --git a/ui/terminal/status.go b/ui/terminal/status.go
index 5719456..c8eb382 100644
--- a/ui/terminal/status.go
+++ b/ui/terminal/status.go
@@ -45,7 +45,9 @@
}
func (s *statusOutput) Message(level status.MsgLevel, message string) {
- if level > status.StatusLvl {
+ if level >= status.ErrorLvl {
+ s.writer.Print(fmt.Sprintf("FAILED: %s", message))
+ } else if level > status.StatusLvl {
s.writer.Print(fmt.Sprintf("%s%s", level.Prefix(), message))
} else if level == status.StatusLvl {
s.writer.StatusLine(message)
diff --git a/ui/terminal/writer.go b/ui/terminal/writer.go
index dd32226..351c00c 100644
--- a/ui/terminal/writer.go
+++ b/ui/terminal/writer.go
@@ -81,8 +81,8 @@
}
if term, ok := os.LookupEnv("TERM"); ok && term != "dumb" {
- w.stripEscapes = !isTerminal(stdio.Stderr())
- w.smartTerminal = isTerminal(stdio.Stdout()) && !w.stripEscapes
+ w.smartTerminal = isTerminal(stdio.Stdout())
+ w.stripEscapes = !w.smartTerminal
}
return w
@@ -127,9 +127,9 @@
fmt.Fprint(w.stdio.Stdout(), "\r", "\x1b[K")
w.haveBlankLine = true
}
- fmt.Fprint(w.stdio.Stderr(), str)
+ fmt.Fprint(w.stdio.Stdout(), str)
if len(str) == 0 || str[len(str)-1] != '\n' {
- fmt.Fprint(w.stdio.Stderr(), "\n")
+ fmt.Fprint(w.stdio.Stdout(), "\n")
}
}