diff options
3 files changed, 26 insertions, 4 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/BUILD b/src/main/java/com/google/devtools/build/lib/BUILD index 5bfa87b00f..33d1601a9c 100644 --- a/src/main/java/com/google/devtools/build/lib/BUILD +++ b/src/main/java/com/google/devtools/build/lib/BUILD @@ -1001,6 +1001,7 @@ java_library( "//src/main/java/com/google/devtools/build/docgen:docgen_javalib", "//src/main/java/com/google/devtools/build/lib/actions", "//src/main/java/com/google/devtools/build/lib/buildeventstream/proto:build_event_stream_java_proto", + "//src/main/java/com/google/devtools/build/lib/buildeventstream/transports", "//src/main/java/com/google/devtools/build/lib/cmdline", "//src/main/java/com/google/devtools/build/lib/query2", "//src/main/java/com/google/devtools/build/lib/query2:query-engine", 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 2cb98293d2..7d7f300bd9 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 @@ -27,6 +27,8 @@ import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; import com.google.common.collect.ListMultimap; import com.google.common.io.Flushables; +import com.google.devtools.build.lib.buildeventstream.BuildEventTransport; +import com.google.devtools.build.lib.buildeventstream.transports.TextFormatFileTransport; import com.google.devtools.build.lib.events.Event; import com.google.devtools.build.lib.events.EventHandler; import com.google.devtools.build.lib.events.Reporter; @@ -452,6 +454,18 @@ public class BlazeCommandDispatcher { Reporter reporter = env.getReporter(); reporter.addHandler(handler); env.getEventBus().register(handler); + if (eventHandlerOptions.buildEventTextFile.length() > 0) { + try { + BuildEventStreamer streamer = + new BuildEventStreamer( + ImmutableSet.<BuildEventTransport>of( + new TextFormatFileTransport(eventHandlerOptions.buildEventTextFile))); + reporter.addHandler(streamer); + env.getEventBus().register(streamer); + } catch (IOException e) { + return ExitCode.LOCAL_ENVIRONMENTAL_ERROR.getNumericExitCode(); + } + } // 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 diff --git a/src/main/java/com/google/devtools/build/lib/runtime/BlazeCommandEventHandler.java b/src/main/java/com/google/devtools/build/lib/runtime/BlazeCommandEventHandler.java index 60e8741b28..7ab613fc3f 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/BlazeCommandEventHandler.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/BlazeCommandEventHandler.java @@ -21,10 +21,6 @@ import com.google.devtools.build.lib.util.io.OutErr; import com.google.devtools.common.options.EnumConverter; import com.google.devtools.common.options.Option; import com.google.devtools.common.options.OptionsBase; - -import org.joda.time.format.DateTimeFormat; -import org.joda.time.format.DateTimeFormatter; - import java.io.IOException; import java.io.OutputStream; import java.io.PrintStream; @@ -32,6 +28,8 @@ import java.util.EnumSet; import java.util.Set; import java.util.logging.Level; import java.util.logging.Logger; +import org.joda.time.format.DateTimeFormat; +import org.joda.time.format.DateTimeFormatter; /** * BlazeCommandEventHandler: an event handler established for the duration of a @@ -170,6 +168,15 @@ public class BlazeCommandEventHandler implements EventHandler { ) public int experimentalUiActionsShown; + + @Option( + name = "experimental_build_event_text_file", + defaultValue = "", + category = "hidden", + help = "If non-empty, write a textual representation of the build event protocol to that file" + ) + public String buildEventTextFile; + public boolean useColor() { return useColorEnum == UseColor.YES || (useColorEnum == UseColor.AUTO && isATty); } |