diff options
author | Klaus Aehlig <aehlig@google.com> | 2016-06-27 11:25:40 +0000 |
---|---|---|
committer | Dmitry Lomov <dslomov@google.com> | 2016-06-27 11:41:33 +0000 |
commit | 99843a88ab52f5b82e3fd934cefb7bbae58c1f04 (patch) | |
tree | 578d46525d48d89c40f7e53d56d4f43319341c69 /src/main/java/com/google/devtools/build/lib/runtime/ExperimentalEventHandler.java | |
parent | 38ebf2adf552bc32489d5a1053797c50fe5be25f (diff) |
experimental UI: Avoid empty lines
...to save a bit of horizontal space in the scroll-back buffer.
The color-coding already gives enough navigation hints.
--
Change-Id: Id0e5decc6bd495a99ec839c096700406d8d1bab9
Reviewed-on: https://bazel-review.googlesource.com/#/c/3902
MOS_MIGRATED_REVID=125943242
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/runtime/ExperimentalEventHandler.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/runtime/ExperimentalEventHandler.java | 39 |
1 files changed, 29 insertions, 10 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/ExperimentalEventHandler.java b/src/main/java/com/google/devtools/build/lib/runtime/ExperimentalEventHandler.java index 8c5062a7b3..ac4068064d 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/ExperimentalEventHandler.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/ExperimentalEventHandler.java @@ -104,17 +104,29 @@ public class ExperimentalEventHandler extends BlazeCommandEventHandler { ignoreRefreshLimitOnce(); } - private synchronized void flushStdOutStdErrBuffers() { + /** + * Flush buffers for stdout and stderr. Return if either of them flushed a non-zero number of + * symbols. + */ + private synchronized boolean flushStdOutStdErrBuffers() { + boolean didFlush = false; try { - outErr.getOutputStream().write(stdoutBuffer); - outErr.getOutputStream().flush(); - stdoutBuffer = new byte[] {}; - outErr.getErrorStream().write(stderrBuffer); - outErr.getErrorStream().flush(); - stderrBuffer = new byte[] {}; + if (stdoutBuffer.length > 0) { + outErr.getOutputStream().write(stdoutBuffer); + outErr.getOutputStream().flush(); + stdoutBuffer = new byte[] {}; + didFlush = true; + } + if (stderrBuffer.length > 0) { + outErr.getErrorStream().write(stderrBuffer); + outErr.getErrorStream().flush(); + stderrBuffer = new byte[] {}; + didFlush = true; + } } catch (IOException e) { LOG.warning("IO Error writing to output stream: " + e); } + return didFlush; } @Override @@ -172,21 +184,28 @@ public class ExperimentalEventHandler extends BlazeCommandEventHandler { case WARNING: case INFO: case SUBCOMMAND: + boolean incompleteLine; if (showProgress && !buildComplete) { clearProgressBar(); } - flushStdOutStdErrBuffers(); - crlf(); + incompleteLine = flushStdOutStdErrBuffers(); + if (incompleteLine) { + crlf(); + } setEventKindColor(event.getKind()); terminal.writeString(event.getKind() + ": "); terminal.resetTerminal(); + incompleteLine = true; if (event.getLocation() != null) { terminal.writeString(event.getLocation() + ": "); } if (event.getMessage() != null) { terminal.writeString(event.getMessage()); + incompleteLine = !event.getMessage().endsWith("\n"); + } + if (incompleteLine) { + crlf(); } - crlf(); if (showProgress && !buildComplete) { addProgressBar(); } |