aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/events
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2015-07-21 15:27:35 +0000
committerGravatar Kristina Chodorow <kchodorow@google.com>2015-07-21 15:13:39 -0400
commit2e7a5b47979b2679208a97a65df265be953eb595 (patch)
tree46d02b16006cc7e9ca4d258d5677abdad629044c /src/main/java/com/google/devtools/build/lib/events
parente8fcd75b80b20bcbaccddaaa106d970f1786a635 (diff)
Fixed bug where blaze run with the --color=no flag was still printing out in color when the build fails.
-- MOS_MIGRATED_REVID=98736813
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/events')
-rw-r--r--src/main/java/com/google/devtools/build/lib/events/Reporter.java35
1 files changed, 34 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/events/Reporter.java b/src/main/java/com/google/devtools/build/lib/events/Reporter.java
index e0c39250ba..a3cf6cce86 100644
--- a/src/main/java/com/google/devtools/build/lib/events/Reporter.java
+++ b/src/main/java/com/google/devtools/build/lib/events/Reporter.java
@@ -25,7 +25,7 @@ import java.util.List;
* is not intended as a logging mechanism for developer-only messages; use a
* Logger for that.
*
- * The reporter instance is consumed by the build system, and passes events to
+ * <p>The reporter instance is consumed by the build system, and passes events to
* {@link EventHandler} instances. These handlers are registered via {@link
* #addHandler(EventHandler)}.
*
@@ -42,6 +42,9 @@ public final class Reporter implements EventHandler, ExceptionListener {
*/
private final OutErr outErrToReporter = outErrForReporter(this);
private volatile OutputFilter outputFilter = OutputFilter.OUTPUT_EVERYTHING;
+ private EventHandler ansiAllowingHandler;
+ private EventHandler ansiStrippingHandler;
+ private boolean ansiAllowingHandlerRegistered;
public Reporter() {}
@@ -143,4 +146,34 @@ public final class Reporter implements EventHandler, ExceptionListener {
public void setOutputFilter(OutputFilter outputFilter) {
this.outputFilter = outputFilter;
}
+
+ /**
+ * Registers an ANSI-control-code-allowing EventHandler with an ANSI-stripping EventHandler
+ * that is already registered with the reporter. The ANSI-stripping handler can then be replaced
+ * with the ANSI-allowing handler by calling {@code #switchToAnsiAllowingHandler} which
+ * calls {@code removeHandler} for the ANSI-stripping handler and then {@code addHandler} for the
+ * ANSI-allowing handler.
+ */
+ public synchronized void registerAnsiAllowingHandler(
+ EventHandler ansiStrippingHandler,
+ EventHandler ansiAllowingHandler) {
+ this.ansiAllowingHandler = ansiAllowingHandler;
+ this.ansiStrippingHandler = ansiStrippingHandler;
+ ansiAllowingHandlerRegistered = true;
+ }
+
+ /**
+ * Restores the ANSI-allowing EventHandler registered using
+ * {@code #registerAnsiAllowingHandler(...)}.
+ */
+ public synchronized void switchToAnsiAllowingHandler() {
+ if (ansiAllowingHandlerRegistered) {
+ removeHandler(ansiStrippingHandler);
+ addHandler(ansiAllowingHandler);
+ ansiStrippingHandler = null;
+ ansiAllowingHandler = null;
+ ansiAllowingHandlerRegistered = false;
+ }
+ }
+
}