From 4b7df4f24c25bb84af968234c1adebc8f56eefb0 Mon Sep 17 00:00:00 2001 From: Klaus Aehlig Date: Tue, 2 May 2017 19:08:29 +0200 Subject: BEP: Add WorkspaceStatus Add an event reporting the workspace status as key-value pairs reported via the workspace_status_command. Change-Id: I5791551798a594bc2465f483eb97f9d4fd4c7cfd PiperOrigin-RevId: 154845224 --- .../build/lib/analysis/BuildInfoEvent.java | 38 +++++++++++++++++++--- 1 file changed, 33 insertions(+), 5 deletions(-) (limited to 'src/main/java/com/google/devtools/build/lib/analysis/BuildInfoEvent.java') diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BuildInfoEvent.java b/src/main/java/com/google/devtools/build/lib/analysis/BuildInfoEvent.java index af0c015c76..de67b6c974 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/BuildInfoEvent.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/BuildInfoEvent.java @@ -14,14 +14,18 @@ package com.google.devtools.build.lib.analysis; +import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; - +import com.google.devtools.build.lib.buildeventstream.BuildEvent; +import com.google.devtools.build.lib.buildeventstream.BuildEventConverters; +import com.google.devtools.build.lib.buildeventstream.BuildEventId; +import com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos; +import com.google.devtools.build.lib.buildeventstream.GenericBuildEvent; +import java.util.Collection; import java.util.Map; -/** - * This event is fired once build info data is available. - */ -public final class BuildInfoEvent { +/** This event is fired once build info data is available. */ +public final class BuildInfoEvent implements BuildEvent { private final Map buildInfoMap; /** @@ -37,4 +41,28 @@ public final class BuildInfoEvent { public Map getBuildInfoMap() { return buildInfoMap; } + + @Override + public BuildEventId getEventId() { + return BuildEventId.workspaceStatusId(); + } + + @Override + public Collection getChildrenEvents() { + return ImmutableList.of(); + } + + @Override + public BuildEventStreamProtos.BuildEvent asStreamProto(BuildEventConverters converters) { + BuildEventStreamProtos.WorkspaceStatus.Builder status = + BuildEventStreamProtos.WorkspaceStatus.newBuilder(); + for (Map.Entry entry : getBuildInfoMap().entrySet()) { + status.addItem( + BuildEventStreamProtos.WorkspaceStatus.Item.newBuilder() + .setKey(entry.getKey()) + .setValue(entry.getValue()) + .build()); + } + return GenericBuildEvent.protoChaining(this).setWorkspaceStatus(status.build()).build(); + } } -- cgit v1.2.3