diff options
author | Lukacs Berki <lberki@google.com> | 2016-09-30 13:05:25 +0000 |
---|---|---|
committer | Yun Peng <pcloudy@google.com> | 2016-09-30 14:13:00 +0000 |
commit | eff49fb234ca66b898df3af9faf6fff3ba33f5b6 (patch) | |
tree | 283234b2c708050d8c112b19e346fe8a316545b6 | |
parent | 3180d1fd5648c53dda8a4c4bd9fe56be7fcd3cf9 (diff) |
Do not write terminal output in the experimental UI character-by-character (which results in single-character gRPC messages).
Fixes #1861.
--
MOS_MIGRATED_REVID=134775680
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/util/io/PositionAwareAnsiTerminalWriter.java | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/util/io/PositionAwareAnsiTerminalWriter.java b/src/main/java/com/google/devtools/build/lib/util/io/PositionAwareAnsiTerminalWriter.java index 5a932d4d6d..ae48c2af41 100644 --- a/src/main/java/com/google/devtools/build/lib/util/io/PositionAwareAnsiTerminalWriter.java +++ b/src/main/java/com/google/devtools/build/lib/util/io/PositionAwareAnsiTerminalWriter.java @@ -31,21 +31,23 @@ public class PositionAwareAnsiTerminalWriter implements AnsiTerminalWriter { this.position = 0; } - private void appendChar(char c) throws IOException { - if (c == '\n') { - terminalWriter.newline(); - position = 0; - } else { - terminalWriter.append(Character.toString(c)); - position++; - } - } - @Override public AnsiTerminalWriter append(String text) throws IOException { - for (int i = 0; i < text.length(); i++) { - appendChar(text.charAt(i)); + int i = 0; + while (i < text.length()) { + int next = text.indexOf('\n', i); + if (next == -1) { + terminalWriter.append(text.substring(i)); + position += text.length() - i; + i = text.length(); + } else { + terminalWriter.append(text.substring(i, next)); + terminalWriter.newline(); + i = next + 1; + position = 0; + } } + return this; } |