aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcher.java
diff options
context:
space:
mode:
authorGravatar Shreya Bhattarai <shreyax@google.com>2015-08-03 20:33:30 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2015-08-04 09:09:25 +0000
commitcd03ca221c4686473d44315e9b448b8c001bb998 (patch)
tree8a7bfad1dc3de7cb24a110cde08695b5e2c976a6 /src/main/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcher.java
parent2f55dd889dab524e57d1788abe529f6d51899000 (diff)
Fixed bug where blaze run with the --color=no flag was still printing out in color when the build fails.
Includes fix for problems causing the original slowdown to blaze query -- MOS_MIGRATED_REVID=99755414
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcher.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcher.java22
1 files changed, 19 insertions, 3 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcher.java b/src/main/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcher.java
index 4d7e9aefe8..2e63b79758 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcher.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcher.java
@@ -362,13 +362,14 @@ public class BlazeCommandDispatcher {
// Setup log filtering
BlazeCommandEventHandler.Options eventHandlerOptions =
optionsParser.getOptions(BlazeCommandEventHandler.Options.class);
+ OutErr colorfulOutErr = outErr;
if (!eventHandlerOptions.useColor()) {
+ outErr = ansiStripOut(ansiStripErr(outErr));
if (!commandAnnotation.binaryStdOut()) {
- outErr = ansiStripOut(outErr);
+ colorfulOutErr = ansiStripOut(colorfulOutErr);
}
-
if (!commandAnnotation.binaryStdErr()) {
- outErr = ansiStripErr(outErr);
+ colorfulOutErr = ansiStripErr(colorfulOutErr);
}
}
@@ -384,6 +385,17 @@ public class BlazeCommandDispatcher {
EventHandler handler = createEventHandler(outErr, eventHandlerOptions);
Reporter reporter = runtime.getReporter();
reporter.addHandler(handler);
+
+ // We register an ANSI-allowing handler associated with {@code handler} so that ANSI control
+ // codes can be re-introduced later even if blaze is invoked with --color=no. This is useful
+ // for commands such as 'blaze run' where the output of the final executable shouldn't be
+ // modified.
+ EventHandler ansiAllowingHandler = null;
+ if (!eventHandlerOptions.useColor()) {
+ ansiAllowingHandler = createEventHandler(colorfulOutErr, eventHandlerOptions);
+ reporter.registerAnsiAllowingHandler(handler, ansiAllowingHandler);
+ }
+
try {
// While a Blaze command is active, direct all errors to the client's
// event handler (and out/err streams).
@@ -436,6 +448,10 @@ public class BlazeCommandDispatcher {
System.setErr(savedErr);
reporter.removeHandler(handler);
releaseHandler(handler);
+ if (!eventHandlerOptions.useColor()) {
+ reporter.removeHandler(ansiAllowingHandler);
+ releaseHandler(ansiAllowingHandler);
+ }
runtime.getTimestampGranularityMonitor().waitForTimestampGranularity(outErr);
}
}