Work in progress - initial skeleton of gopackagesdriver (#2173)
* reads a driverRequest on stdin and writes a driverResponse
* invokes bazel with given command line arguments and build flags.
* requests an output group and aspect (but neither exist yet)
* parses bazel's build event binary proto file to find where outputs
are written for each target.
diff --git a/go/tools/gopackagesdriver/BUILD.bazel b/go/tools/gopackagesdriver/BUILD.bazel
new file mode 100644
index 0000000..1efe6fd
--- /dev/null
+++ b/go/tools/gopackagesdriver/BUILD.bazel
@@ -0,0 +1,12 @@
+load("@io_bazel_rules_go//go:def.bzl", "go_binary")
+
+go_binary(
+ name = "gopackagesdriver",
+ srcs = ["gopackagesdriver.go"],
+ visibility = ["//visibility:public"],
+ deps = [
+ "//go/tools/gopackagesdriver/proto/build_event_stream:go_default_library",
+ "@com_github_golang_protobuf//proto:go_default_library",
+ "@org_golang_x_tools//go/packages:go_default_library",
+ ],
+)
diff --git a/go/tools/gopackagesdriver/gopackagesdriver.go b/go/tools/gopackagesdriver/gopackagesdriver.go
new file mode 100644
index 0000000..bd4d03b
--- /dev/null
+++ b/go/tools/gopackagesdriver/gopackagesdriver.go
@@ -0,0 +1,241 @@
+// Copyright 2019 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// gopackagesdriver collects metadata, syntax, and type information for
+// Go packages built with bazel. It implements the driver interface for
+// golang.org/x/tools/go/packages. When gopackagesdriver is installed
+// in PATH, tools like gopls written with golang.org/x/tools/go/packages,
+// work in bazel workspaces.
+package main
+
+import (
+ "encoding/json"
+ "errors"
+ "flag"
+ "fmt"
+ "go/types"
+ "io/ioutil"
+ "log"
+ "os"
+ "os/exec"
+ "sort"
+
+ bespb "github.com/bazelbuild/rules_go/go/tools/gopackagesdriver/proto/build_event_stream"
+ "github.com/golang/protobuf/proto"
+ "golang.org/x/tools/go/packages"
+)
+
+func main() {
+ log.SetPrefix("gopackagesdriver: ")
+ log.SetFlags(0)
+ if err := run(os.Args[1:]); err != nil {
+ log.Fatal(err)
+ }
+}
+
+// driverRequest is a JSON object sent by golang.org/x/tools/go/packages
+// on stdin. Keep in sync.
+type driverRequest struct {
+ Command string `json:"command"`
+ Mode packages.LoadMode `json:"mode"`
+ Env []string `json:"env"`
+ BuildFlags []string `json:"build_flags"`
+ Tests bool `json:"tests"`
+ Overlay map[string][]byte `json:"overlay"`
+}
+
+// driverResponse is a JSON object sent by this program to
+// golang.org/x/tools/go/packages on stdout. Keep in sync.
+type driverResponse struct {
+ // Sizes, if not nil, is the types.Sizes to use when type checking.
+ Sizes *types.StdSizes
+
+ // Roots is the set of package IDs that make up the root packages.
+ // We have to encode this separately because when we encode a single package
+ // we cannot know if it is one of the roots as that requires knowledge of the
+ // graph it is part of.
+ Roots []string `json:",omitempty"`
+
+ // Packages is the full set of packages in the graph.
+ // The packages are not connected into a graph.
+ // The Imports if populated will be stubs that only have their ID set.
+ // Imports will be connected and then type and syntax information added in a
+ // later pass (see refine).
+ Packages []*packages.Package
+}
+
+func run(args []string) error {
+ // Parse command line arguments and driver request sent on stdin.
+ fs := flag.NewFlagSet("gopackagesdriver", flag.ExitOnError)
+ if err := fs.Parse(args); err != nil {
+ return err
+ }
+ targets := fs.Args()
+ if len(targets) == 0 {
+ return errors.New("no targets specified")
+ }
+
+ reqData, err := ioutil.ReadAll(os.Stdin)
+ if err != nil {
+ return err
+ }
+ var req driverRequest
+ if err := json.Unmarshal(reqData, &req); err != nil {
+ return fmt.Errorf("could not unmarshal driver request: %v", err)
+ }
+
+ // Build package data files using bazel. We use one of several aspects
+ // (depending on what mode we're in). The aspect produces .json and source
+ // files in an output group. Each .json file contains a serialized
+ // *packages.Package object.
+ outputGroup := "gopackagesdriver_data"
+ aspect := "gopackagesdriver_todo"
+
+ // We ask bazel to write build event protos to a binary file, which
+ // we read to find the output files.
+ eventFile, err := ioutil.TempFile("", "gopackagesdriver-bazel-bep-*.bin")
+ if err != nil {
+ return err
+ }
+ eventFileName := eventFile.Name()
+ defer func() {
+ if eventFile != nil {
+ eventFile.Close()
+ }
+ os.Remove(eventFileName)
+ }()
+
+ cmd := exec.Command("bazel", "build")
+ cmd.Args = append(cmd.Args, "--aspects="+aspect)
+ cmd.Args = append(cmd.Args, "--output_groups="+outputGroup)
+ cmd.Args = append(cmd.Args, "--build_event_binary_file="+eventFile.Name())
+ cmd.Args = append(cmd.Args, req.BuildFlags...)
+ cmd.Args = append(cmd.Args, "--")
+ for _, target := range targets {
+ cmd.Args = append(cmd.Args, target)
+ }
+ cmd.Stdout = os.Stderr // sic
+ cmd.Stderr = os.Stderr
+ if err := cmd.Run(); err != nil {
+ return fmt.Errorf("error running bazel: %v", err)
+ }
+
+ eventData, err := ioutil.ReadAll(eventFile)
+ if err != nil {
+ return fmt.Errorf("could not read bazel build event file: %v", err)
+ }
+ eventFile.Close()
+
+ var rootSets []string
+ setToFiles := make(map[string][]string)
+ setToSets := make(map[string][]string)
+ pbuf := proto.NewBuffer(eventData)
+ var event bespb.BuildEvent
+ for !event.GetLastMessage() {
+ if err := pbuf.DecodeMessage(&event); err != nil {
+ return err
+ }
+
+ if id := event.GetId().GetTargetCompleted(); id != nil {
+ completed := event.GetCompleted()
+ if !completed.GetSuccess() {
+ return fmt.Errorf("%s: target did not build successfully", id.GetLabel())
+ }
+ for _, g := range completed.GetOutputGroup() {
+ for _, s := range g.GetFileSets() {
+ if setId := s.GetId(); setId != "" {
+ rootSets = append(rootSets, setId)
+ }
+ }
+ }
+ }
+
+ if id := event.GetId().GetNamedSet(); id != nil {
+ files := event.GetNamedSetOfFiles().GetFiles()
+ fileNames := make([]string, len(files))
+ for i, f := range files {
+ fileNames[i] = f.GetName()
+ }
+ setToFiles[id.GetId()] = fileNames
+ sets := event.GetNamedSetOfFiles().GetFileSets()
+ setIds := make([]string, len(sets))
+ for i, s := range sets {
+ setIds[i] = s.GetId()
+ }
+ setToSets[id.GetId()] = setIds
+ continue
+ }
+ }
+
+ var visit func(string, map[string]bool, map[string]bool)
+ visit = func(setId string, files map[string]bool, visited map[string]bool) {
+ if visited[setId] {
+ return
+ }
+ visited[setId] = true
+ for _, f := range setToFiles[setId] {
+ files[f] = true
+ }
+ for _, s := range setToSets[setId] {
+ visit(s, files, visited)
+ }
+ }
+
+ files := make(map[string]bool)
+ for _, s := range rootSets {
+ visit(s, files, map[string]bool{})
+ }
+ sortedFiles := make([]string, 0, len(files))
+ for f := range files {
+ sortedFiles = append(sortedFiles, f)
+ }
+ sort.Strings(sortedFiles)
+
+ // Load data files referenced on the command line.
+ pkgs := make(map[string]*packages.Package)
+ roots := make(map[string]bool)
+ for _, target := range targets {
+ panic(fmt.Sprintf("json processing not implemented: %s", target))
+ }
+
+ sortedRoots := make([]string, 0, len(roots))
+ for root := range roots {
+ sortedRoots = append(sortedRoots, root)
+ }
+ sort.Strings(sortedRoots)
+
+ sortedPkgs := make([]*packages.Package, 0, len(pkgs))
+ for _, pkg := range pkgs {
+ sortedPkgs = append(sortedPkgs, pkg)
+ }
+ sort.Slice(sortedPkgs, func(i, j int) bool {
+ return sortedPkgs[i].ID < sortedPkgs[j].ID
+ })
+
+ resp := driverResponse{
+ Sizes: nil, // TODO
+ Roots: sortedRoots,
+ Packages: sortedPkgs,
+ }
+ respData, err := json.Marshal(resp)
+ if err != nil {
+ return fmt.Errorf("could not marshal driver response: %v", err)
+ }
+ _, err = os.Stdout.Write(respData)
+ if err != nil {
+ return err
+ }
+
+ return errors.New("not implemented")
+}
diff --git a/go/tools/gopackagesdriver/proto/build_event_stream.proto b/go/tools/gopackagesdriver/proto/build_event_stream.proto
new file mode 100644
index 0000000..5941665
--- /dev/null
+++ b/go/tools/gopackagesdriver/proto/build_event_stream.proto
@@ -0,0 +1,699 @@
+// Copyright 2016 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+package build_event_stream;
+
+option java_package = "com.google.devtools.build.lib.buildeventstream";
+option java_outer_classname = "BuildEventStreamProtos";
+
+import "src/main/protobuf/invocation_policy.proto";
+import "src/main/protobuf/command_line.proto";
+
+// Identifier for a build event. It is deliberately structured to also provide
+// information about which build target etc the event is related to.
+//
+// Events are chained via the event id as follows: each event has an id and a
+// set of ids of children events such that apart from the initial event each
+// event has an id that is mentioned as child id in an earlier event and a build
+// invocation is complete if and only if all direct and indirect children of the
+// initial event have been posted.
+message BuildEventId {
+ // Generic identifier for a build event. This is the default type of
+ // BuildEventId, but should not be used outside testing; nevertheless,
+ // tools should handle build events with this kind of id gracefully.
+ message UnknownBuildEventId {
+ string details = 1;
+ }
+
+ // Identifier of an event reporting progress. Those events are also used to
+ // chain in events that come early.
+ message ProgressId {
+ // Unique identifier. No assumption should be made about how the ids are
+ // assigned; the only meaningful operation on this field is test for
+ // equality.
+ int32 opaque_count = 1;
+ }
+
+ // Identifier of an event indicating the beginning of a build; this will
+ // normally be the first event.
+ message BuildStartedId {
+ }
+
+ // Identifier on an event indicating the original commandline received by
+ // the bazel server.
+ message UnstructuredCommandLineId {
+ }
+
+ // Identifier on an event describing the commandline received by Bazel.
+ message StructuredCommandLineId {
+ // A title for this command line value, as there may be multiple.
+ // For example, a single invocation may wish to report both the literal and
+ // canonical command lines, and this label would be used to differentiate
+ // between both versions.
+ string command_line_label = 1;
+ }
+
+ // Identifier of an event indicating the workspace status.
+ message WorkspaceStatusId {
+ }
+
+ // Identifier on an event reporting on the options included in the command
+ // line, both explicitly and implicitly.
+ message OptionsParsedId {
+ }
+
+ // Identifier of an event reporting that an external resource was fetched
+ // from.
+ message FetchId {
+ // The external resource that was fetched from.
+ string url = 1;
+ }
+
+ // Identifier of an event indicating that a target pattern has been expanded
+ // further.
+ // Messages of this shape are also used to describe parts of a pattern that
+ // have been skipped for some reason, if the actual expansion was still
+ // carried out (e.g., if keep_going is set). In this case, the
+ // pattern_skipped choice in the id field is to be made.
+ message PatternExpandedId {
+ repeated string pattern = 1;
+ }
+
+ // Identifier of an event indicating that a target has been expanded by
+ // identifying for which configurations it should be build.
+ message TargetConfiguredId {
+ string label = 1;
+
+ // If not empty, the id refers to the expansion of the target for a given
+ // aspect.
+ string aspect = 2;
+ }
+
+ // Identifier of an event introducing a named set of files (usually artifacts)
+ // to be referred to in later messages.
+ message NamedSetOfFilesId {
+ // Identifier of the file set; this is an opaque string valid only for the
+ // particular instance of the event stream.
+ string id = 1;
+ }
+
+ // Identifier of an event introducing a configuration.
+ message ConfigurationId {
+ // Identifier of the configuration; users of the protocol should not make
+ // any assumptions about it having any structure, or equality of the
+ // identifier between different streams.
+ string id = 1;
+ }
+
+ // Identifier of an event indicating that a target was built completely; this
+ // does not include running the test if the target is a test target.
+ message TargetCompletedId {
+ string label = 1;
+
+ // The configuration for which the target was built.
+ ConfigurationId configuration = 3;
+
+ // If not empty, the id refers to the completion of the target for a given
+ // aspect.
+ string aspect = 2;
+ }
+
+ // Identifier of an event reporting that an action was completed (not all
+ // actions are reported, only the ones that can be considered important;
+ // this includes all failed actions).
+ message ActionCompletedId {
+ string primary_output = 1;
+ // Optional, the label of the owner of the action, for reference.
+ string label = 2;
+ // Optional, the id of the configuration of the action owner.
+ ConfigurationId configuration = 3;
+ }
+
+ // Identifier of an event reporting an event associated with an unconfigured
+ // label. Usually, this indicates a failure due to a missing input file. In
+ // any case, it will report some form of error (i.e., the payload will be an
+ // Aborted event); there are no regular events using this identifier. The
+ // purpose of those events is to serve as the root cause of a failed target.
+ message UnconfiguredLabelId {
+ string label = 1;
+ }
+
+ // Identifier of an event reporting an event associated with a configured
+ // label, usually a visibility error. In any case, an event with such an
+ // id will always report some form of error (i.e., the payload will be an
+ // Aborted event); there are no regular events using this identifier.
+ message ConfiguredLabelId {
+ string label = 1;
+ ConfigurationId configuration = 2;
+ }
+
+ // Identifier of an event reporting on an individual test run. The label
+ // identifies the test that is reported about, the remaining fields are
+ // in such a way as to uniquely identify the action within a build. In fact,
+ // attempts for the same test, run, shard triple are counted sequentially,
+ // starting with 1.
+ message TestResultId {
+ string label = 1;
+ ConfigurationId configuration = 5;
+ int32 run = 2;
+ int32 shard = 3;
+ int32 attempt = 4;
+ }
+
+ // Identifier of an event reporting the summary of a test.
+ message TestSummaryId {
+ string label = 1;
+ ConfigurationId configuration = 2;
+ }
+
+ // Identifier of the BuildFinished event, indicating the end of a build.
+ message BuildFinishedId {
+ }
+
+ // Identifier of an event providing additional logs/statistics after
+ // completion of the build.
+ message BuildToolLogsId {
+ }
+
+ // Identifier of an event providing build metrics after completion
+ // of the build.
+ message BuildMetricsId {
+ }
+
+ oneof id {
+ UnknownBuildEventId unknown = 1;
+ ProgressId progress = 2;
+ BuildStartedId started = 3;
+ UnstructuredCommandLineId unstructured_command_line = 11;
+ StructuredCommandLineId structured_command_line = 18;
+ WorkspaceStatusId workspace_status = 14;
+ OptionsParsedId options_parsed = 12;
+ FetchId fetch = 17;
+ ConfigurationId configuration = 15;
+ TargetConfiguredId target_configured = 16;
+ PatternExpandedId pattern = 4;
+ PatternExpandedId pattern_skipped = 10;
+ NamedSetOfFilesId named_set = 13;
+ TargetCompletedId target_completed = 5;
+ ActionCompletedId action_completed = 6;
+ UnconfiguredLabelId unconfigured_label = 19;
+ ConfiguredLabelId configured_label = 21;
+ TestResultId test_result = 8;
+ TestSummaryId test_summary = 7;
+ BuildFinishedId build_finished = 9;
+ BuildToolLogsId build_tool_logs = 20;
+ BuildMetricsId build_metrics = 22;
+ }
+}
+
+// Payload of an event summarizing the progress of the build so far. Those
+// events are also used to be parents of events where the more logical parent
+// event cannot be posted yet as the needed information is not yet complete.
+message Progress {
+ // The next chunk of stdout that bazel produced since the last progress event
+ // or the beginning of the build.
+ string stdout = 1;
+
+ // The next chunk of stderr that bazel produced since the last progress event
+ // or the beginning of the build.
+ string stderr = 2;
+}
+
+// Payload of an event indicating that an expected event will not come, as
+// the build is aborted prematurely for some reason.
+message Aborted {
+ enum AbortReason {
+ UNKNOWN = 0;
+
+ // The user requested the build to be aborted (e.g., by hitting Ctl-C).
+ USER_INTERRUPTED = 1;
+
+ // The user requested that no analysis be performed.
+ NO_ANALYZE = 8;
+
+ // The user requested that no build be carried out.
+ NO_BUILD = 9;
+
+ // The build or target was aborted as a timeout was exceeded.
+ TIME_OUT = 2;
+
+ // The build or target was aborted as some remote environment (e.g., for
+ // remote execution of actions) was not available in the expected way.
+ REMOTE_ENVIRONMENT_FAILURE = 3;
+
+ // Failure due to reasons entirely internal to the build tool, e.g.,
+ // running out of memory.
+ INTERNAL = 4;
+
+ // A Failure occurred in the loading phase of a target.
+ LOADING_FAILURE = 5;
+
+ // A Failure occurred in the analysis phase of a target.
+ ANALYSIS_FAILURE = 6;
+
+ // Target build was skipped (e.g. due to incompatible CPU constraints).
+ SKIPPED = 7;
+ }
+ AbortReason reason = 1;
+
+ // A human readable description with more details about there reason, where
+ // available and useful.
+ string description = 2;
+}
+
+// Payload of an event indicating the beginning of a new build. Usually, events
+// of those type start a new build-event stream. The target pattern requested
+// to be build is contained in one of the announced child events; it is an
+// invariant that precisely one of the announced child events has a non-empty
+// target pattern.
+message BuildStarted {
+ string uuid = 1;
+
+ // Start of the build in ms since the epoch.
+ // TODO(buchgr): Use google.protobuf.TimeStamp once bazel's protoc supports
+ // it.
+ int64 start_time_millis = 2;
+
+ // Version of the build tool that is running.
+ string build_tool_version = 3;
+
+ // A human-readable description of all the non-default option settings
+ string options_description = 4;
+
+ // The name of the command that the user invoked.
+ string command = 5;
+
+ // The working directory from which the build tool was invoked.
+ string working_directory = 6;
+
+ // The directory of the workspace.
+ string workspace_directory = 7;
+
+ // The process ID of the Bazel server.
+ int64 server_pid = 8;
+}
+
+// Payload of an event reporting the command-line of the invocation as
+// originally received by the server. Note that this is not the command-line
+// given by the user, as the client adds information about the invocation,
+// like name and relevant entries of rc-files and client environment variables.
+// However, it does contain enough information to reproduce the build
+// invocation.
+message UnstructuredCommandLine {
+ repeated string args = 1;
+}
+
+// Payload of an event reporting on the parsed options, grouped in various ways.
+message OptionsParsed {
+ repeated string startup_options = 1;
+ repeated string explicit_startup_options = 2;
+ repeated string cmd_line = 3;
+ repeated string explicit_cmd_line = 4;
+ blaze.invocation_policy.InvocationPolicy invocation_policy = 5;
+ string tool_tag = 6;
+}
+
+// Payload of an event indicating that an external resource was fetched. This
+// event will only occur in streams where an actual fetch happened, not in ones
+// where a cached copy of the entity to be fetched was used.
+message Fetch {
+ bool success = 1;
+}
+
+// Payload of an event reporting the workspace status. Key-value pairs can be
+// provided by specifying the workspace_status_command to an executable that
+// returns one key-value pair per line of output (key and value separated by a
+// space).
+message WorkspaceStatus {
+ message Item {
+ string key = 1;
+ string value = 2;
+ }
+ repeated Item item = 1;
+}
+
+// Payload of an event reporting details of a given configuration.
+message Configuration {
+ string mnemonic = 1;
+ string platform_name = 2;
+ string cpu = 3;
+ map<string, string> make_variable = 4;
+}
+
+// Payload of the event indicating the expansion of a target pattern.
+// The main information is in the chaining part: the id will contain the
+// target pattern that was expanded and the children id will contain the
+// target or target pattern it was expanded to.
+message PatternExpanded {
+}
+
+// Enumeration type characterizing the size of a test, as specified by the
+// test rule.
+enum TestSize {
+ UNKNOWN = 0;
+ SMALL = 1;
+ MEDIUM = 2;
+ LARGE = 3;
+ ENORMOUS = 4;
+}
+
+// Payload of the event indicating that the configurations for a target have
+// been identified. As with pattern expansion the main information is in the
+// chaining part: the id will contain the target that was configured and the
+// children id will contain the configured targets it was configured to.
+message TargetConfigured {
+ // The kind of target (e.g., e.g. "cc_library rule", "source file",
+ // "generated file") where the completion is reported.
+ string target_kind = 1;
+
+ // The size of the test, if the target is a test target. Unset otherwise.
+ TestSize test_size = 2;
+
+ // List of all tags associated with this target (for all possible
+ // configurations).
+ repeated string tag = 3;
+}
+
+message File {
+ // identifier indicating the nature of the file (e.g., "stdout", "stderr")
+ string name = 1;
+
+ oneof file {
+ // A location where the contents of the file can be found. The string is
+ // encoded according to RFC2396.
+ string uri = 2;
+ // The contents of the file, if they are guaranteed to be short.
+ bytes contents = 3;
+ }
+}
+
+// Payload of a message to describe a set of files, usually build artifacts, to
+// be referred to later by their name. In this way, files that occur identically
+// as outputs of several targets have to be named only once.
+message NamedSetOfFiles {
+ // Files that belong to this named set of files.
+ repeated File files = 1;
+
+ // Other named sets whose members also belong to this set.
+ repeated BuildEventId.NamedSetOfFilesId file_sets = 2;
+}
+
+// Payload of the event indicating the completion of an action. The main purpose
+// of posting those events is to provide details on the root cause for a target
+// failing; however, consumers of the build-event protocol must not assume
+// that only failed actions are posted.
+message ActionExecuted {
+ bool success = 1;
+
+ // The mnemonic of the action that was executed
+ string type = 8;
+
+ // The exit code of the action, if it is available.
+ int32 exit_code = 2;
+
+ // Location where to find the standard output of the action
+ // (e.g., a file path).
+ File stdout = 3;
+
+ // Location where to find the standard error of the action
+ // (e.g., a file path).
+ File stderr = 4;
+
+ // Deprecated. This field is now present on ActionCompletedId.
+ string label = 5 [deprecated = true];
+
+ // Deprecated. This field is now present on ActionCompletedId.
+ BuildEventId.ConfigurationId configuration = 7 [deprecated = true];
+
+ // Primary output; only provided for successful actions.
+ File primary_output = 6;
+
+ // The command-line of the action, if the action is a command.
+ repeated string command_line = 9;
+}
+
+// Collection of all output files belonging to that output group.
+message OutputGroup {
+ // Ids of fields that have been removed.
+ reserved 2;
+
+ // Name of the output group
+ string name = 1;
+
+ // List of file sets that belong to this output group as well.
+ repeated BuildEventId.NamedSetOfFilesId file_sets = 3;
+}
+
+// Payload of the event indicating the completion of a target. The target is
+// specified in the id. If the target failed the root causes are provided as
+// children events.
+message TargetComplete {
+ bool success = 1;
+
+ // The kind of target (e.g., e.g. "cc_library rule", "source file",
+ // "generated file") where the completion is reported.
+ // Deprecated: use the target_kind field in TargetConfigured instead.
+ string target_kind = 5 [deprecated = true];
+
+ // The size of the test, if the target is a test target. Unset otherwise.
+ // Deprecated: use the test_size field in TargetConfigured instead.
+ TestSize test_size = 6 [deprecated = true];
+
+ // The output files are arranged by their output group. If an output file
+ // is part of multiple output groups, it appears once in each output
+ // group.
+ repeated OutputGroup output_group = 2;
+
+ // Temporarily, also report the important outputs directly. This is only to
+ // allow existing clients help transition to the deduplicated representation;
+ // new clients should not use it.
+ repeated File important_output = 4 [deprecated = true];
+
+ // List of tags associated with this configured target.
+ repeated string tag = 3;
+
+ // The timeout specified for test actions under this configured target.
+ int64 test_timeout_seconds = 7;
+}
+
+enum TestStatus {
+ NO_STATUS = 0;
+ PASSED = 1;
+ FLAKY = 2;
+ TIMEOUT = 3;
+ FAILED = 4;
+ INCOMPLETE = 5;
+ REMOTE_FAILURE = 6;
+ FAILED_TO_BUILD = 7;
+ TOOL_HALTED_BEFORE_TESTING = 8;
+};
+
+// Payload on events reporting about individual test action.
+message TestResult {
+ reserved 1;
+
+ // The status of this test.
+ TestStatus status = 5;
+
+ // Additional details about the status of the test. This is intended for
+ // user display and must not be parsed.
+ string status_details = 9;
+
+ // True, if the reported attempt is taken from the tool's local cache.
+ bool cached_locally = 4;
+
+ // Time in milliseconds since the epoch at which the test attempt was started.
+ // Note: for cached test results, this is time can be before the start of the
+ // build.
+ int64 test_attempt_start_millis_epoch = 6;
+
+ // Time the test took to run. For locally cached results, this is the time
+ // the cached invocation took when it was invoked.
+ int64 test_attempt_duration_millis = 3;
+
+ // Files (logs, test.xml, undeclared outputs, etc) generated by that test
+ // action.
+ repeated File test_action_output = 2;
+
+ // Warnings generated by that test action.
+ repeated string warning = 7;
+
+ // Message providing optional meta data on the execution of the test action,
+ // if available.
+ message ExecutionInfo {
+ // Deprecated, use TargetComplete.test_timeout_seconds instead.
+ int32 timeout_seconds = 1 [deprecated = true];
+
+ // Name of the strategy to execute this test action (e.g., "local",
+ // "remote")
+ string strategy = 2;
+
+ // True, if the reported attempt was a cache hit in a remote cache.
+ bool cached_remotely = 6;
+
+ // The exit code of the test action.
+ int32 exit_code = 7;
+
+ // The hostname of the machine where the test action was executed (in case
+ // of remote execution), if known.
+ string hostname = 3;
+
+ // Represents a hierarchical timing breakdown of an activity.
+ // The top level time should be the total time of the activity.
+ // Invariant: time_millis >= sum of time_millis of all direct children.
+ message TimingBreakdown {
+ repeated TimingBreakdown child = 1;
+ string name = 2;
+ int64 time_millis = 3;
+ }
+ TimingBreakdown timing_breakdown = 4;
+
+ message ResourceUsage {
+ string name = 1;
+ int64 value = 2;
+ }
+ repeated ResourceUsage resource_usage = 5;
+ }
+ ExecutionInfo execution_info = 8;
+}
+
+// Payload of the event summarizing a test.
+// TODO(aehlig): extend event with additional information as soon as we known
+// which additional information we need for test summaries.
+message TestSummary {
+ // Wrapper around BlazeTestStatus to support importing that enum to proto3.
+ // Overall status of test, accumulated over all runs, shards, and attempts.
+ TestStatus overall_status = 5;
+
+ // Total number of runs
+ int32 total_run_count = 1;
+
+ // Path to logs of passed runs.
+ repeated File passed = 3;
+
+ // Path to logs of failed runs;
+ repeated File failed = 4;
+
+ // Total number of cached test actions
+ int32 total_num_cached = 6;
+}
+
+// Event indicating the end of a build.
+message BuildFinished {
+ // Exit code of a build. The possible values correspond to the predefined
+ // codes in bazel's lib.ExitCode class, as well as any custom exit code a
+ // module might define. The predefined exit codes are subject to change (but
+ // rarely do) and are not part of the public API.
+ //
+ // A build was successful iff ExitCode.code equals 0.
+ message ExitCode {
+ // The name of the exit code.
+ string name = 1;
+
+ // The exit code.
+ int32 code = 2;
+ }
+
+ // If the build succeeded or failed.
+ bool overall_success = 1 [deprecated = true];
+
+ // The overall status of the build. A build was successful iff
+ // ExitCode.code equals 0.
+ ExitCode exit_code = 3;
+
+ // Time in milliseconds since the epoch.
+ // TODO(buchgr): Use google.protobuf.Timestamp once bazel's protoc supports
+ // it.
+ int64 finish_time_millis = 2;
+}
+
+message BuildMetrics {
+ message ActionSummary {
+ // The total number of actions created and registered during the build.
+ // This includes unused actions that were constructed but
+ // not executed during this build.
+ int64 actions_created = 1;
+
+ // The total number of actions executed during the build.
+ // This includes any remote cache hits, but excludes
+ // local action cache hits.
+ int64 actions_executed = 2;
+ }
+ ActionSummary action_summary = 1;
+
+ message MemoryMetrics {
+ // Size of the JVM heap post build in bytes. This is only collected if
+ // --bep_publish_used_heap_size_post_build is set,
+ // since it forces a full GC.
+ int64 used_heap_size_post_build = 1;
+ }
+ MemoryMetrics memory_metrics = 2;
+
+ message TargetMetrics {
+ // Number of targets loaded during this build.
+ int64 targets_loaded = 1;
+
+ // Number of targets configured during this build. This can
+ // be greater than targets_loaded if the same target is configured
+ // multiple times.
+ int64 targets_configured = 2;
+ }
+ TargetMetrics target_metrics = 3;
+
+ message PackageMetrics {
+ // Number of BUILD files (aka packages) loaded during this build.
+ int64 packages_loaded = 1;
+ }
+ PackageMetrics package_metrics = 4;
+}
+
+// Event providing additional statistics/logs after completion of the build.
+message BuildToolLogs {
+ repeated File log = 1;
+}
+
+// Message describing a build event. Events will have an identifier that
+// is unique within a given build invocation; they also announce follow-up
+// events as children. More details, which are specific to the kind of event
+// that is observed, is provided in the payload. More options for the payload
+// might be added in the future.
+message BuildEvent {
+ reserved 11, 19;
+ BuildEventId id = 1;
+ repeated BuildEventId children = 2;
+ bool last_message = 20;
+ oneof payload {
+ Progress progress = 3;
+ Aborted aborted = 4;
+ BuildStarted started = 5;
+ UnstructuredCommandLine unstructured_command_line = 12;
+ command_line.CommandLine structured_command_line = 22;
+ OptionsParsed options_parsed = 13;
+ WorkspaceStatus workspace_status = 16;
+ Fetch fetch = 21;
+ Configuration configuration = 17;
+ PatternExpanded expanded = 6;
+ TargetConfigured configured = 18;
+ ActionExecuted action = 7;
+ NamedSetOfFiles named_set_of_files = 15;
+ TargetComplete completed = 8;
+ TestResult test_result = 10;
+ TestSummary test_summary = 9;
+ BuildFinished finished = 14;
+ BuildToolLogs build_tool_logs = 23;
+ BuildMetrics build_metrics = 24;
+ };
+}
diff --git a/go/tools/gopackagesdriver/proto/build_event_stream/BUILD.bazel b/go/tools/gopackagesdriver/proto/build_event_stream/BUILD.bazel
new file mode 100644
index 0000000..633ca78
--- /dev/null
+++ b/go/tools/gopackagesdriver/proto/build_event_stream/BUILD.bazel
@@ -0,0 +1,13 @@
+load("@io_bazel_rules_go//go:def.bzl", "go_library")
+
+go_library(
+ name = "go_default_library",
+ srcs = ["build_event_stream.pb.go"],
+ importpath = "github.com/bazelbuild/rules_go/go/tools/gopackagesdriver/proto/build_event_stream",
+ visibility = ["//visibility:public"],
+ deps = [
+ "//go/tools/gopackagesdriver/proto/command_line:go_default_library",
+ "//go/tools/gopackagesdriver/proto/invocation_policy:go_default_library",
+ "@com_github_golang_protobuf//proto:go_default_library",
+ ],
+)
diff --git a/go/tools/gopackagesdriver/proto/build_event_stream/build_event_stream.pb.go b/go/tools/gopackagesdriver/proto/build_event_stream/build_event_stream.pb.go
new file mode 100644
index 0000000..8ad7ba5
--- /dev/null
+++ b/go/tools/gopackagesdriver/proto/build_event_stream/build_event_stream.pb.go
@@ -0,0 +1,3971 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: build_event_stream.proto
+
+package build_event_stream
+
+import (
+ fmt "fmt"
+ command_line "github.com/bazelbuild/rules_go/go/tools/gopackagesdriver/proto/command_line"
+ invocation_policy "github.com/bazelbuild/rules_go/go/tools/gopackagesdriver/proto/invocation_policy"
+ proto "github.com/golang/protobuf/proto"
+ math "math"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+
+// Enumeration type characterizing the size of a test, as specified by the
+// test rule.
+type TestSize int32
+
+const (
+ TestSize_UNKNOWN TestSize = 0
+ TestSize_SMALL TestSize = 1
+ TestSize_MEDIUM TestSize = 2
+ TestSize_LARGE TestSize = 3
+ TestSize_ENORMOUS TestSize = 4
+)
+
+var TestSize_name = map[int32]string{
+ 0: "UNKNOWN",
+ 1: "SMALL",
+ 2: "MEDIUM",
+ 3: "LARGE",
+ 4: "ENORMOUS",
+}
+
+var TestSize_value = map[string]int32{
+ "UNKNOWN": 0,
+ "SMALL": 1,
+ "MEDIUM": 2,
+ "LARGE": 3,
+ "ENORMOUS": 4,
+}
+
+func (x TestSize) String() string {
+ return proto.EnumName(TestSize_name, int32(x))
+}
+
+func (TestSize) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_817c6a9aafd47c5b, []int{0}
+}
+
+type TestStatus int32
+
+const (
+ TestStatus_NO_STATUS TestStatus = 0
+ TestStatus_PASSED TestStatus = 1
+ TestStatus_FLAKY TestStatus = 2
+ TestStatus_TIMEOUT TestStatus = 3
+ TestStatus_FAILED TestStatus = 4
+ TestStatus_INCOMPLETE TestStatus = 5
+ TestStatus_REMOTE_FAILURE TestStatus = 6
+ TestStatus_FAILED_TO_BUILD TestStatus = 7
+ TestStatus_TOOL_HALTED_BEFORE_TESTING TestStatus = 8
+)
+
+var TestStatus_name = map[int32]string{
+ 0: "NO_STATUS",
+ 1: "PASSED",
+ 2: "FLAKY",
+ 3: "TIMEOUT",
+ 4: "FAILED",
+ 5: "INCOMPLETE",
+ 6: "REMOTE_FAILURE",
+ 7: "FAILED_TO_BUILD",
+ 8: "TOOL_HALTED_BEFORE_TESTING",
+}
+
+var TestStatus_value = map[string]int32{
+ "NO_STATUS": 0,
+ "PASSED": 1,
+ "FLAKY": 2,
+ "TIMEOUT": 3,
+ "FAILED": 4,
+ "INCOMPLETE": 5,
+ "REMOTE_FAILURE": 6,
+ "FAILED_TO_BUILD": 7,
+ "TOOL_HALTED_BEFORE_TESTING": 8,
+}
+
+func (x TestStatus) String() string {
+ return proto.EnumName(TestStatus_name, int32(x))
+}
+
+func (TestStatus) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_817c6a9aafd47c5b, []int{1}
+}
+
+type Aborted_AbortReason int32
+
+const (
+ Aborted_UNKNOWN Aborted_AbortReason = 0
+ // The user requested the build to be aborted (e.g., by hitting Ctl-C).
+ Aborted_USER_INTERRUPTED Aborted_AbortReason = 1
+ // The user requested that no analysis be performed.
+ Aborted_NO_ANALYZE Aborted_AbortReason = 8
+ // The user requested that no build be carried out.
+ Aborted_NO_BUILD Aborted_AbortReason = 9
+ // The build or target was aborted as a timeout was exceeded.
+ Aborted_TIME_OUT Aborted_AbortReason = 2
+ // The build or target was aborted as some remote environment (e.g., for
+ // remote execution of actions) was not available in the expected way.
+ Aborted_REMOTE_ENVIRONMENT_FAILURE Aborted_AbortReason = 3
+ // Failure due to reasons entirely internal to the build tool, e.g.,
+ // running out of memory.
+ Aborted_INTERNAL Aborted_AbortReason = 4
+ // A Failure occurred in the loading phase of a target.
+ Aborted_LOADING_FAILURE Aborted_AbortReason = 5
+ // A Failure occurred in the analysis phase of a target.
+ Aborted_ANALYSIS_FAILURE Aborted_AbortReason = 6
+ // Target build was skipped (e.g. due to incompatible CPU constraints).
+ Aborted_SKIPPED Aborted_AbortReason = 7
+)
+
+var Aborted_AbortReason_name = map[int32]string{
+ 0: "UNKNOWN",
+ 1: "USER_INTERRUPTED",
+ 8: "NO_ANALYZE",
+ 9: "NO_BUILD",
+ 2: "TIME_OUT",
+ 3: "REMOTE_ENVIRONMENT_FAILURE",
+ 4: "INTERNAL",
+ 5: "LOADING_FAILURE",
+ 6: "ANALYSIS_FAILURE",
+ 7: "SKIPPED",
+}
+
+var Aborted_AbortReason_value = map[string]int32{
+ "UNKNOWN": 0,
+ "USER_INTERRUPTED": 1,
+ "NO_ANALYZE": 8,
+ "NO_BUILD": 9,
+ "TIME_OUT": 2,
+ "REMOTE_ENVIRONMENT_FAILURE": 3,
+ "INTERNAL": 4,
+ "LOADING_FAILURE": 5,
+ "ANALYSIS_FAILURE": 6,
+ "SKIPPED": 7,
+}
+
+func (x Aborted_AbortReason) String() string {
+ return proto.EnumName(Aborted_AbortReason_name, int32(x))
+}
+
+func (Aborted_AbortReason) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_817c6a9aafd47c5b, []int{2, 0}
+}
+
+// Identifier for a build event. It is deliberately structured to also provide
+// information about which build target etc the event is related to.
+//
+// Events are chained via the event id as follows: each event has an id and a
+// set of ids of children events such that apart from the initial event each
+// event has an id that is mentioned as child id in an earlier event and a build
+// invocation is complete if and only if all direct and indirect children of the
+// initial event have been posted.
+type BuildEventId struct {
+ // Types that are valid to be assigned to Id:
+ // *BuildEventId_Unknown
+ // *BuildEventId_Progress
+ // *BuildEventId_Started
+ // *BuildEventId_UnstructuredCommandLine
+ // *BuildEventId_StructuredCommandLine
+ // *BuildEventId_WorkspaceStatus
+ // *BuildEventId_OptionsParsed
+ // *BuildEventId_Fetch
+ // *BuildEventId_Configuration
+ // *BuildEventId_TargetConfigured
+ // *BuildEventId_Pattern
+ // *BuildEventId_PatternSkipped
+ // *BuildEventId_NamedSet
+ // *BuildEventId_TargetCompleted
+ // *BuildEventId_ActionCompleted
+ // *BuildEventId_UnconfiguredLabel
+ // *BuildEventId_ConfiguredLabel
+ // *BuildEventId_TestResult
+ // *BuildEventId_TestSummary
+ // *BuildEventId_BuildFinished
+ // *BuildEventId_BuildToolLogs
+ // *BuildEventId_BuildMetrics
+ Id isBuildEventId_Id `protobuf_oneof:"id"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *BuildEventId) Reset() { *m = BuildEventId{} }
+func (m *BuildEventId) String() string { return proto.CompactTextString(m) }
+func (*BuildEventId) ProtoMessage() {}
+func (*BuildEventId) Descriptor() ([]byte, []int) {
+ return fileDescriptor_817c6a9aafd47c5b, []int{0}
+}
+
+func (m *BuildEventId) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_BuildEventId.Unmarshal(m, b)
+}
+func (m *BuildEventId) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_BuildEventId.Marshal(b, m, deterministic)
+}
+func (m *BuildEventId) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_BuildEventId.Merge(m, src)
+}
+func (m *BuildEventId) XXX_Size() int {
+ return xxx_messageInfo_BuildEventId.Size(m)
+}
+func (m *BuildEventId) XXX_DiscardUnknown() {
+ xxx_messageInfo_BuildEventId.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BuildEventId proto.InternalMessageInfo
+
+type isBuildEventId_Id interface {
+ isBuildEventId_Id()
+}
+
+type BuildEventId_Unknown struct {
+ Unknown *BuildEventId_UnknownBuildEventId `protobuf:"bytes,1,opt,name=unknown,proto3,oneof"`
+}
+
+type BuildEventId_Progress struct {
+ Progress *BuildEventId_ProgressId `protobuf:"bytes,2,opt,name=progress,proto3,oneof"`
+}
+
+type BuildEventId_Started struct {
+ Started *BuildEventId_BuildStartedId `protobuf:"bytes,3,opt,name=started,proto3,oneof"`
+}
+
+type BuildEventId_UnstructuredCommandLine struct {
+ UnstructuredCommandLine *BuildEventId_UnstructuredCommandLineId `protobuf:"bytes,11,opt,name=unstructured_command_line,json=unstructuredCommandLine,proto3,oneof"`
+}
+
+type BuildEventId_StructuredCommandLine struct {
+ StructuredCommandLine *BuildEventId_StructuredCommandLineId `protobuf:"bytes,18,opt,name=structured_command_line,json=structuredCommandLine,proto3,oneof"`
+}
+
+type BuildEventId_WorkspaceStatus struct {
+ WorkspaceStatus *BuildEventId_WorkspaceStatusId `protobuf:"bytes,14,opt,name=workspace_status,json=workspaceStatus,proto3,oneof"`
+}
+
+type BuildEventId_OptionsParsed struct {
+ OptionsParsed *BuildEventId_OptionsParsedId `protobuf:"bytes,12,opt,name=options_parsed,json=optionsParsed,proto3,oneof"`
+}
+
+type BuildEventId_Fetch struct {
+ Fetch *BuildEventId_FetchId `protobuf:"bytes,17,opt,name=fetch,proto3,oneof"`
+}
+
+type BuildEventId_Configuration struct {
+ Configuration *BuildEventId_ConfigurationId `protobuf:"bytes,15,opt,name=configuration,proto3,oneof"`
+}
+
+type BuildEventId_TargetConfigured struct {
+ TargetConfigured *BuildEventId_TargetConfiguredId `protobuf:"bytes,16,opt,name=target_configured,json=targetConfigured,proto3,oneof"`
+}
+
+type BuildEventId_Pattern struct {
+ Pattern *BuildEventId_PatternExpandedId `protobuf:"bytes,4,opt,name=pattern,proto3,oneof"`
+}
+
+type BuildEventId_PatternSkipped struct {
+ PatternSkipped *BuildEventId_PatternExpandedId `protobuf:"bytes,10,opt,name=pattern_skipped,json=patternSkipped,proto3,oneof"`
+}
+
+type BuildEventId_NamedSet struct {
+ NamedSet *BuildEventId_NamedSetOfFilesId `protobuf:"bytes,13,opt,name=named_set,json=namedSet,proto3,oneof"`
+}
+
+type BuildEventId_TargetCompleted struct {
+ TargetCompleted *BuildEventId_TargetCompletedId `protobuf:"bytes,5,opt,name=target_completed,json=targetCompleted,proto3,oneof"`
+}
+
+type BuildEventId_ActionCompleted struct {
+ ActionCompleted *BuildEventId_ActionCompletedId `protobuf:"bytes,6,opt,name=action_completed,json=actionCompleted,proto3,oneof"`
+}
+
+type BuildEventId_UnconfiguredLabel struct {
+ UnconfiguredLabel *BuildEventId_UnconfiguredLabelId `protobuf:"bytes,19,opt,name=unconfigured_label,json=unconfiguredLabel,proto3,oneof"`
+}
+
+type BuildEventId_ConfiguredLabel struct {
+ ConfiguredLabel *BuildEventId_ConfiguredLabelId `protobuf:"bytes,21,opt,name=configured_label,json=configuredLabel,proto3,oneof"`
+}
+
+type BuildEventId_TestResult struct {
+ TestResult *BuildEventId_TestResultId `protobuf:"bytes,8,opt,name=test_result,json=testResult,proto3,oneof"`
+}
+
+type BuildEventId_TestSummary struct {
+ TestSummary *BuildEventId_TestSummaryId `protobuf:"bytes,7,opt,name=test_summary,json=testSummary,proto3,oneof"`
+}
+
+type BuildEventId_BuildFinished struct {
+ BuildFinished *BuildEventId_BuildFinishedId `protobuf:"bytes,9,opt,name=build_finished,json=buildFinished,proto3,oneof"`
+}
+
+type BuildEventId_BuildToolLogs struct {
+ BuildToolLogs *BuildEventId_BuildToolLogsId `protobuf:"bytes,20,opt,name=build_tool_logs,json=buildToolLogs,proto3,oneof"`
+}
+
+type BuildEventId_BuildMetrics struct {
+ BuildMetrics *BuildEventId_BuildMetricsId `protobuf:"bytes,22,opt,name=build_metrics,json=buildMetrics,proto3,oneof"`
+}
+
+func (*BuildEventId_Unknown) isBuildEventId_Id() {}
+
+func (*BuildEventId_Progress) isBuildEventId_Id() {}
+
+func (*BuildEventId_Started) isBuildEventId_Id() {}
+
+func (*BuildEventId_UnstructuredCommandLine) isBuildEventId_Id() {}
+
+func (*BuildEventId_StructuredCommandLine) isBuildEventId_Id() {}
+
+func (*BuildEventId_WorkspaceStatus) isBuildEventId_Id() {}
+
+func (*BuildEventId_OptionsParsed) isBuildEventId_Id() {}
+
+func (*BuildEventId_Fetch) isBuildEventId_Id() {}
+
+func (*BuildEventId_Configuration) isBuildEventId_Id() {}
+
+func (*BuildEventId_TargetConfigured) isBuildEventId_Id() {}
+
+func (*BuildEventId_Pattern) isBuildEventId_Id() {}
+
+func (*BuildEventId_PatternSkipped) isBuildEventId_Id() {}
+
+func (*BuildEventId_NamedSet) isBuildEventId_Id() {}
+
+func (*BuildEventId_TargetCompleted) isBuildEventId_Id() {}
+
+func (*BuildEventId_ActionCompleted) isBuildEventId_Id() {}
+
+func (*BuildEventId_UnconfiguredLabel) isBuildEventId_Id() {}
+
+func (*BuildEventId_ConfiguredLabel) isBuildEventId_Id() {}
+
+func (*BuildEventId_TestResult) isBuildEventId_Id() {}
+
+func (*BuildEventId_TestSummary) isBuildEventId_Id() {}
+
+func (*BuildEventId_BuildFinished) isBuildEventId_Id() {}
+
+func (*BuildEventId_BuildToolLogs) isBuildEventId_Id() {}
+
+func (*BuildEventId_BuildMetrics) isBuildEventId_Id() {}
+
+func (m *BuildEventId) GetId() isBuildEventId_Id {
+ if m != nil {
+ return m.Id
+ }
+ return nil
+}
+
+func (m *BuildEventId) GetUnknown() *BuildEventId_UnknownBuildEventId {
+ if x, ok := m.GetId().(*BuildEventId_Unknown); ok {
+ return x.Unknown
+ }
+ return nil
+}
+
+func (m *BuildEventId) GetProgress() *BuildEventId_ProgressId {
+ if x, ok := m.GetId().(*BuildEventId_Progress); ok {
+ return x.Progress
+ }
+ return nil
+}
+
+func (m *BuildEventId) GetStarted() *BuildEventId_BuildStartedId {
+ if x, ok := m.GetId().(*BuildEventId_Started); ok {
+ return x.Started
+ }
+ return nil
+}
+
+func (m *BuildEventId) GetUnstructuredCommandLine() *BuildEventId_UnstructuredCommandLineId {
+ if x, ok := m.GetId().(*BuildEventId_UnstructuredCommandLine); ok {
+ return x.UnstructuredCommandLine
+ }
+ return nil
+}
+
+func (m *BuildEventId) GetStructuredCommandLine() *BuildEventId_StructuredCommandLineId {
+ if x, ok := m.GetId().(*BuildEventId_StructuredCommandLine); ok {
+ return x.StructuredCommandLine
+ }
+ return nil
+}
+
+func (m *BuildEventId) GetWorkspaceStatus() *BuildEventId_WorkspaceStatusId {
+ if x, ok := m.GetId().(*BuildEventId_WorkspaceStatus); ok {
+ return x.WorkspaceStatus
+ }
+ return nil
+}
+
+func (m *BuildEventId) GetOptionsParsed() *BuildEventId_OptionsParsedId {
+ if x, ok := m.GetId().(*BuildEventId_OptionsParsed); ok {
+ return x.OptionsParsed
+ }
+ return nil
+}
+
+func (m *BuildEventId) GetFetch() *BuildEventId_FetchId {
+ if x, ok := m.GetId().(*BuildEventId_Fetch); ok {
+ return x.Fetch
+ }
+ return nil
+}
+
+func (m *BuildEventId) GetConfiguration() *BuildEventId_ConfigurationId {
+ if x, ok := m.GetId().(*BuildEventId_Configuration); ok {
+ return x.Configuration
+ }
+ return nil
+}
+
+func (m *BuildEventId) GetTargetConfigured() *BuildEventId_TargetConfiguredId {
+ if x, ok := m.GetId().(*BuildEventId_TargetConfigured); ok {
+ return x.TargetConfigured
+ }
+ return nil
+}
+
+func (m *BuildEventId) GetPattern() *BuildEventId_PatternExpandedId {
+ if x, ok := m.GetId().(*BuildEventId_Pattern); ok {
+ return x.Pattern
+ }
+ return nil
+}
+
+func (m *BuildEventId) GetPatternSkipped() *BuildEventId_PatternExpandedId {
+ if x, ok := m.GetId().(*BuildEventId_PatternSkipped); ok {
+ return x.PatternSkipped
+ }
+ return nil
+}
+
+func (m *BuildEventId) GetNamedSet() *BuildEventId_NamedSetOfFilesId {
+ if x, ok := m.GetId().(*BuildEventId_NamedSet); ok {
+ return x.NamedSet
+ }
+ return nil
+}
+
+func (m *BuildEventId) GetTargetCompleted() *BuildEventId_TargetCompletedId {
+ if x, ok := m.GetId().(*BuildEventId_TargetCompleted); ok {
+ return x.TargetCompleted
+ }
+ return nil
+}
+
+func (m *BuildEventId) GetActionCompleted() *BuildEventId_ActionCompletedId {
+ if x, ok := m.GetId().(*BuildEventId_ActionCompleted); ok {
+ return x.ActionCompleted
+ }
+ return nil
+}
+
+func (m *BuildEventId) GetUnconfiguredLabel() *BuildEventId_UnconfiguredLabelId {
+ if x, ok := m.GetId().(*BuildEventId_UnconfiguredLabel); ok {
+ return x.UnconfiguredLabel
+ }
+ return nil
+}
+
+func (m *BuildEventId) GetConfiguredLabel() *BuildEventId_ConfiguredLabelId {
+ if x, ok := m.GetId().(*BuildEventId_ConfiguredLabel); ok {
+ return x.ConfiguredLabel
+ }
+ return nil
+}
+
+func (m *BuildEventId) GetTestResult() *BuildEventId_TestResultId {
+ if x, ok := m.GetId().(*BuildEventId_TestResult); ok {
+ return x.TestResult
+ }
+ return nil
+}
+
+func (m *BuildEventId) GetTestSummary() *BuildEventId_TestSummaryId {
+ if x, ok := m.GetId().(*BuildEventId_TestSummary); ok {
+ return x.TestSummary
+ }
+ return nil
+}
+
+func (m *BuildEventId) GetBuildFinished() *BuildEventId_BuildFinishedId {
+ if x, ok := m.GetId().(*BuildEventId_BuildFinished); ok {
+ return x.BuildFinished
+ }
+ return nil
+}
+
+func (m *BuildEventId) GetBuildToolLogs() *BuildEventId_BuildToolLogsId {
+ if x, ok := m.GetId().(*BuildEventId_BuildToolLogs); ok {
+ return x.BuildToolLogs
+ }
+ return nil
+}
+
+func (m *BuildEventId) GetBuildMetrics() *BuildEventId_BuildMetricsId {
+ if x, ok := m.GetId().(*BuildEventId_BuildMetrics); ok {
+ return x.BuildMetrics
+ }
+ return nil
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*BuildEventId) XXX_OneofWrappers() []interface{} {
+ return []interface{}{
+ (*BuildEventId_Unknown)(nil),
+ (*BuildEventId_Progress)(nil),
+ (*BuildEventId_Started)(nil),
+ (*BuildEventId_UnstructuredCommandLine)(nil),
+ (*BuildEventId_StructuredCommandLine)(nil),
+ (*BuildEventId_WorkspaceStatus)(nil),
+ (*BuildEventId_OptionsParsed)(nil),
+ (*BuildEventId_Fetch)(nil),
+ (*BuildEventId_Configuration)(nil),
+ (*BuildEventId_TargetConfigured)(nil),
+ (*BuildEventId_Pattern)(nil),
+ (*BuildEventId_PatternSkipped)(nil),
+ (*BuildEventId_NamedSet)(nil),
+ (*BuildEventId_TargetCompleted)(nil),
+ (*BuildEventId_ActionCompleted)(nil),
+ (*BuildEventId_UnconfiguredLabel)(nil),
+ (*BuildEventId_ConfiguredLabel)(nil),
+ (*BuildEventId_TestResult)(nil),
+ (*BuildEventId_TestSummary)(nil),
+ (*BuildEventId_BuildFinished)(nil),
+ (*BuildEventId_BuildToolLogs)(nil),
+ (*BuildEventId_BuildMetrics)(nil),
+ }
+}
+
+// Generic identifier for a build event. This is the default type of
+// BuildEventId, but should not be used outside testing; nevertheless,
+// tools should handle build events with this kind of id gracefully.
+type BuildEventId_UnknownBuildEventId struct {
+ Details string `protobuf:"bytes,1,opt,name=details,proto3" json:"details,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *BuildEventId_UnknownBuildEventId) Reset() { *m = BuildEventId_UnknownBuildEventId{} }
+func (m *BuildEventId_UnknownBuildEventId) String() string { return proto.CompactTextString(m) }
+func (*BuildEventId_UnknownBuildEventId) ProtoMessage() {}
+func (*BuildEventId_UnknownBuildEventId) Descriptor() ([]byte, []int) {
+ return fileDescriptor_817c6a9aafd47c5b, []int{0, 0}
+}
+
+func (m *BuildEventId_UnknownBuildEventId) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_BuildEventId_UnknownBuildEventId.Unmarshal(m, b)
+}
+func (m *BuildEventId_UnknownBuildEventId) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_BuildEventId_UnknownBuildEventId.Marshal(b, m, deterministic)
+}
+func (m *BuildEventId_UnknownBuildEventId) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_BuildEventId_UnknownBuildEventId.Merge(m, src)
+}
+func (m *BuildEventId_UnknownBuildEventId) XXX_Size() int {
+ return xxx_messageInfo_BuildEventId_UnknownBuildEventId.Size(m)
+}
+func (m *BuildEventId_UnknownBuildEventId) XXX_DiscardUnknown() {
+ xxx_messageInfo_BuildEventId_UnknownBuildEventId.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BuildEventId_UnknownBuildEventId proto.InternalMessageInfo
+
+func (m *BuildEventId_UnknownBuildEventId) GetDetails() string {
+ if m != nil {
+ return m.Details
+ }
+ return ""
+}
+
+// Identifier of an event reporting progress. Those events are also used to
+// chain in events that come early.
+type BuildEventId_ProgressId struct {
+ // Unique identifier. No assumption should be made about how the ids are
+ // assigned; the only meaningful operation on this field is test for
+ // equality.
+ OpaqueCount int32 `protobuf:"varint,1,opt,name=opaque_count,json=opaqueCount,proto3" json:"opaque_count,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *BuildEventId_ProgressId) Reset() { *m = BuildEventId_ProgressId{} }
+func (m *BuildEventId_ProgressId) String() string { return proto.CompactTextString(m) }
+func (*BuildEventId_ProgressId) ProtoMessage() {}
+func (*BuildEventId_ProgressId) Descriptor() ([]byte, []int) {
+ return fileDescriptor_817c6a9aafd47c5b, []int{0, 1}
+}
+
+func (m *BuildEventId_ProgressId) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_BuildEventId_ProgressId.Unmarshal(m, b)
+}
+func (m *BuildEventId_ProgressId) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_BuildEventId_ProgressId.Marshal(b, m, deterministic)
+}
+func (m *BuildEventId_ProgressId) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_BuildEventId_ProgressId.Merge(m, src)
+}
+func (m *BuildEventId_ProgressId) XXX_Size() int {
+ return xxx_messageInfo_BuildEventId_ProgressId.Size(m)
+}
+func (m *BuildEventId_ProgressId) XXX_DiscardUnknown() {
+ xxx_messageInfo_BuildEventId_ProgressId.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BuildEventId_ProgressId proto.InternalMessageInfo
+
+func (m *BuildEventId_ProgressId) GetOpaqueCount() int32 {
+ if m != nil {
+ return m.OpaqueCount
+ }
+ return 0
+}
+
+// Identifier of an event indicating the beginning of a build; this will
+// normally be the first event.
+type BuildEventId_BuildStartedId struct {
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *BuildEventId_BuildStartedId) Reset() { *m = BuildEventId_BuildStartedId{} }
+func (m *BuildEventId_BuildStartedId) String() string { return proto.CompactTextString(m) }
+func (*BuildEventId_BuildStartedId) ProtoMessage() {}
+func (*BuildEventId_BuildStartedId) Descriptor() ([]byte, []int) {
+ return fileDescriptor_817c6a9aafd47c5b, []int{0, 2}
+}
+
+func (m *BuildEventId_BuildStartedId) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_BuildEventId_BuildStartedId.Unmarshal(m, b)
+}
+func (m *BuildEventId_BuildStartedId) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_BuildEventId_BuildStartedId.Marshal(b, m, deterministic)
+}
+func (m *BuildEventId_BuildStartedId) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_BuildEventId_BuildStartedId.Merge(m, src)
+}
+func (m *BuildEventId_BuildStartedId) XXX_Size() int {
+ return xxx_messageInfo_BuildEventId_BuildStartedId.Size(m)
+}
+func (m *BuildEventId_BuildStartedId) XXX_DiscardUnknown() {
+ xxx_messageInfo_BuildEventId_BuildStartedId.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BuildEventId_BuildStartedId proto.InternalMessageInfo
+
+// Identifier on an event indicating the original commandline received by
+// the bazel server.
+type BuildEventId_UnstructuredCommandLineId struct {
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *BuildEventId_UnstructuredCommandLineId) Reset() {
+ *m = BuildEventId_UnstructuredCommandLineId{}
+}
+func (m *BuildEventId_UnstructuredCommandLineId) String() string { return proto.CompactTextString(m) }
+func (*BuildEventId_UnstructuredCommandLineId) ProtoMessage() {}
+func (*BuildEventId_UnstructuredCommandLineId) Descriptor() ([]byte, []int) {
+ return fileDescriptor_817c6a9aafd47c5b, []int{0, 3}
+}
+
+func (m *BuildEventId_UnstructuredCommandLineId) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_BuildEventId_UnstructuredCommandLineId.Unmarshal(m, b)
+}
+func (m *BuildEventId_UnstructuredCommandLineId) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_BuildEventId_UnstructuredCommandLineId.Marshal(b, m, deterministic)
+}
+func (m *BuildEventId_UnstructuredCommandLineId) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_BuildEventId_UnstructuredCommandLineId.Merge(m, src)
+}
+func (m *BuildEventId_UnstructuredCommandLineId) XXX_Size() int {
+ return xxx_messageInfo_BuildEventId_UnstructuredCommandLineId.Size(m)
+}
+func (m *BuildEventId_UnstructuredCommandLineId) XXX_DiscardUnknown() {
+ xxx_messageInfo_BuildEventId_UnstructuredCommandLineId.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BuildEventId_UnstructuredCommandLineId proto.InternalMessageInfo
+
+// Identifier on an event describing the commandline received by Bazel.
+type BuildEventId_StructuredCommandLineId struct {
+ // A title for this command line value, as there may be multiple.
+ // For example, a single invocation may wish to report both the literal and
+ // canonical command lines, and this label would be used to differentiate
+ // between both versions.
+ CommandLineLabel string `protobuf:"bytes,1,opt,name=command_line_label,json=commandLineLabel,proto3" json:"command_line_label,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *BuildEventId_StructuredCommandLineId) Reset() { *m = BuildEventId_StructuredCommandLineId{} }
+func (m *BuildEventId_StructuredCommandLineId) String() string { return proto.CompactTextString(m) }
+func (*BuildEventId_StructuredCommandLineId) ProtoMessage() {}
+func (*BuildEventId_StructuredCommandLineId) Descriptor() ([]byte, []int) {
+ return fileDescriptor_817c6a9aafd47c5b, []int{0, 4}
+}
+
+func (m *BuildEventId_StructuredCommandLineId) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_BuildEventId_StructuredCommandLineId.Unmarshal(m, b)
+}
+func (m *BuildEventId_StructuredCommandLineId) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_BuildEventId_StructuredCommandLineId.Marshal(b, m, deterministic)
+}
+func (m *BuildEventId_StructuredCommandLineId) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_BuildEventId_StructuredCommandLineId.Merge(m, src)
+}
+func (m *BuildEventId_StructuredCommandLineId) XXX_Size() int {
+ return xxx_messageInfo_BuildEventId_StructuredCommandLineId.Size(m)
+}
+func (m *BuildEventId_StructuredCommandLineId) XXX_DiscardUnknown() {
+ xxx_messageInfo_BuildEventId_StructuredCommandLineId.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BuildEventId_StructuredCommandLineId proto.InternalMessageInfo
+
+func (m *BuildEventId_StructuredCommandLineId) GetCommandLineLabel() string {
+ if m != nil {
+ return m.CommandLineLabel
+ }
+ return ""
+}
+
+// Identifier of an event indicating the workspace status.
+type BuildEventId_WorkspaceStatusId struct {
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *BuildEventId_WorkspaceStatusId) Reset() { *m = BuildEventId_WorkspaceStatusId{} }
+func (m *BuildEventId_WorkspaceStatusId) String() string { return proto.CompactTextString(m) }
+func (*BuildEventId_WorkspaceStatusId) ProtoMessage() {}
+func (*BuildEventId_WorkspaceStatusId) Descriptor() ([]byte, []int) {
+ return fileDescriptor_817c6a9aafd47c5b, []int{0, 5}
+}
+
+func (m *BuildEventId_WorkspaceStatusId) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_BuildEventId_WorkspaceStatusId.Unmarshal(m, b)
+}
+func (m *BuildEventId_WorkspaceStatusId) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_BuildEventId_WorkspaceStatusId.Marshal(b, m, deterministic)
+}
+func (m *BuildEventId_WorkspaceStatusId) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_BuildEventId_WorkspaceStatusId.Merge(m, src)
+}
+func (m *BuildEventId_WorkspaceStatusId) XXX_Size() int {
+ return xxx_messageInfo_BuildEventId_WorkspaceStatusId.Size(m)
+}
+func (m *BuildEventId_WorkspaceStatusId) XXX_DiscardUnknown() {
+ xxx_messageInfo_BuildEventId_WorkspaceStatusId.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BuildEventId_WorkspaceStatusId proto.InternalMessageInfo
+
+// Identifier on an event reporting on the options included in the command
+// line, both explicitly and implicitly.
+type BuildEventId_OptionsParsedId struct {
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *BuildEventId_OptionsParsedId) Reset() { *m = BuildEventId_OptionsParsedId{} }
+func (m *BuildEventId_OptionsParsedId) String() string { return proto.CompactTextString(m) }
+func (*BuildEventId_OptionsParsedId) ProtoMessage() {}
+func (*BuildEventId_OptionsParsedId) Descriptor() ([]byte, []int) {
+ return fileDescriptor_817c6a9aafd47c5b, []int{0, 6}
+}
+
+func (m *BuildEventId_OptionsParsedId) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_BuildEventId_OptionsParsedId.Unmarshal(m, b)
+}
+func (m *BuildEventId_OptionsParsedId) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_BuildEventId_OptionsParsedId.Marshal(b, m, deterministic)
+}
+func (m *BuildEventId_OptionsParsedId) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_BuildEventId_OptionsParsedId.Merge(m, src)
+}
+func (m *BuildEventId_OptionsParsedId) XXX_Size() int {
+ return xxx_messageInfo_BuildEventId_OptionsParsedId.Size(m)
+}
+func (m *BuildEventId_OptionsParsedId) XXX_DiscardUnknown() {
+ xxx_messageInfo_BuildEventId_OptionsParsedId.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BuildEventId_OptionsParsedId proto.InternalMessageInfo
+
+// Identifier of an event reporting that an external resource was fetched
+// from.
+type BuildEventId_FetchId struct {
+ // The external resource that was fetched from.
+ Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *BuildEventId_FetchId) Reset() { *m = BuildEventId_FetchId{} }
+func (m *BuildEventId_FetchId) String() string { return proto.CompactTextString(m) }
+func (*BuildEventId_FetchId) ProtoMessage() {}
+func (*BuildEventId_FetchId) Descriptor() ([]byte, []int) {
+ return fileDescriptor_817c6a9aafd47c5b, []int{0, 7}
+}
+
+func (m *BuildEventId_FetchId) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_BuildEventId_FetchId.Unmarshal(m, b)
+}
+func (m *BuildEventId_FetchId) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_BuildEventId_FetchId.Marshal(b, m, deterministic)
+}
+func (m *BuildEventId_FetchId) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_BuildEventId_FetchId.Merge(m, src)
+}
+func (m *BuildEventId_FetchId) XXX_Size() int {
+ return xxx_messageInfo_BuildEventId_FetchId.Size(m)
+}
+func (m *BuildEventId_FetchId) XXX_DiscardUnknown() {
+ xxx_messageInfo_BuildEventId_FetchId.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BuildEventId_FetchId proto.InternalMessageInfo
+
+func (m *BuildEventId_FetchId) GetUrl() string {
+ if m != nil {
+ return m.Url
+ }
+ return ""
+}
+
+// Identifier of an event indicating that a target pattern has been expanded
+// further.
+// Messages of this shape are also used to describe parts of a pattern that
+// have been skipped for some reason, if the actual expansion was still
+// carried out (e.g., if keep_going is set). In this case, the
+// pattern_skipped choice in the id field is to be made.
+type BuildEventId_PatternExpandedId struct {
+ Pattern []string `protobuf:"bytes,1,rep,name=pattern,proto3" json:"pattern,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *BuildEventId_PatternExpandedId) Reset() { *m = BuildEventId_PatternExpandedId{} }
+func (m *BuildEventId_PatternExpandedId) String() string { return proto.CompactTextString(m) }
+func (*BuildEventId_PatternExpandedId) ProtoMessage() {}
+func (*BuildEventId_PatternExpandedId) Descriptor() ([]byte, []int) {
+ return fileDescriptor_817c6a9aafd47c5b, []int{0, 8}
+}
+
+func (m *BuildEventId_PatternExpandedId) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_BuildEventId_PatternExpandedId.Unmarshal(m, b)
+}
+func (m *BuildEventId_PatternExpandedId) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_BuildEventId_PatternExpandedId.Marshal(b, m, deterministic)
+}
+func (m *BuildEventId_PatternExpandedId) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_BuildEventId_PatternExpandedId.Merge(m, src)
+}
+func (m *BuildEventId_PatternExpandedId) XXX_Size() int {
+ return xxx_messageInfo_BuildEventId_PatternExpandedId.Size(m)
+}
+func (m *BuildEventId_PatternExpandedId) XXX_DiscardUnknown() {
+ xxx_messageInfo_BuildEventId_PatternExpandedId.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BuildEventId_PatternExpandedId proto.InternalMessageInfo
+
+func (m *BuildEventId_PatternExpandedId) GetPattern() []string {
+ if m != nil {
+ return m.Pattern
+ }
+ return nil
+}
+
+// Identifier of an event indicating that a target has been expanded by
+// identifying for which configurations it should be build.
+type BuildEventId_TargetConfiguredId struct {
+ Label string `protobuf:"bytes,1,opt,name=label,proto3" json:"label,omitempty"`
+ // If not empty, the id refers to the expansion of the target for a given
+ // aspect.
+ Aspect string `protobuf:"bytes,2,opt,name=aspect,proto3" json:"aspect,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *BuildEventId_TargetConfiguredId) Reset() { *m = BuildEventId_TargetConfiguredId{} }
+func (m *BuildEventId_TargetConfiguredId) String() string { return proto.CompactTextString(m) }
+func (*BuildEventId_TargetConfiguredId) ProtoMessage() {}
+func (*BuildEventId_TargetConfiguredId) Descriptor() ([]byte, []int) {
+ return fileDescriptor_817c6a9aafd47c5b, []int{0, 9}
+}
+
+func (m *BuildEventId_TargetConfiguredId) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_BuildEventId_TargetConfiguredId.Unmarshal(m, b)
+}
+func (m *BuildEventId_TargetConfiguredId) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_BuildEventId_TargetConfiguredId.Marshal(b, m, deterministic)
+}
+func (m *BuildEventId_TargetConfiguredId) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_BuildEventId_TargetConfiguredId.Merge(m, src)
+}
+func (m *BuildEventId_TargetConfiguredId) XXX_Size() int {
+ return xxx_messageInfo_BuildEventId_TargetConfiguredId.Size(m)
+}
+func (m *BuildEventId_TargetConfiguredId) XXX_DiscardUnknown() {
+ xxx_messageInfo_BuildEventId_TargetConfiguredId.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BuildEventId_TargetConfiguredId proto.InternalMessageInfo
+
+func (m *BuildEventId_TargetConfiguredId) GetLabel() string {
+ if m != nil {
+ return m.Label
+ }
+ return ""
+}
+
+func (m *BuildEventId_TargetConfiguredId) GetAspect() string {
+ if m != nil {
+ return m.Aspect
+ }
+ return ""
+}
+
+// Identifier of an event introducing a named set of files (usually artifacts)
+// to be referred to in later messages.
+type BuildEventId_NamedSetOfFilesId struct {
+ // Identifier of the file set; this is an opaque string valid only for the
+ // particular instance of the event stream.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *BuildEventId_NamedSetOfFilesId) Reset() { *m = BuildEventId_NamedSetOfFilesId{} }
+func (m *BuildEventId_NamedSetOfFilesId) String() string { return proto.CompactTextString(m) }
+func (*BuildEventId_NamedSetOfFilesId) ProtoMessage() {}
+func (*BuildEventId_NamedSetOfFilesId) Descriptor() ([]byte, []int) {
+ return fileDescriptor_817c6a9aafd47c5b, []int{0, 10}
+}
+
+func (m *BuildEventId_NamedSetOfFilesId) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_BuildEventId_NamedSetOfFilesId.Unmarshal(m, b)
+}
+func (m *BuildEventId_NamedSetOfFilesId) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_BuildEventId_NamedSetOfFilesId.Marshal(b, m, deterministic)
+}
+func (m *BuildEventId_NamedSetOfFilesId) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_BuildEventId_NamedSetOfFilesId.Merge(m, src)
+}
+func (m *BuildEventId_NamedSetOfFilesId) XXX_Size() int {
+ return xxx_messageInfo_BuildEventId_NamedSetOfFilesId.Size(m)
+}
+func (m *BuildEventId_NamedSetOfFilesId) XXX_DiscardUnknown() {
+ xxx_messageInfo_BuildEventId_NamedSetOfFilesId.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BuildEventId_NamedSetOfFilesId proto.InternalMessageInfo
+
+func (m *BuildEventId_NamedSetOfFilesId) GetId() string {
+ if m != nil {
+ return m.Id
+ }
+ return ""
+}
+
+// Identifier of an event introducing a configuration.
+type BuildEventId_ConfigurationId struct {
+ // Identifier of the configuration; users of the protocol should not make
+ // any assumptions about it having any structure, or equality of the
+ // identifier between different streams.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *BuildEventId_ConfigurationId) Reset() { *m = BuildEventId_ConfigurationId{} }
+func (m *BuildEventId_ConfigurationId) String() string { return proto.CompactTextString(m) }
+func (*BuildEventId_ConfigurationId) ProtoMessage() {}
+func (*BuildEventId_ConfigurationId) Descriptor() ([]byte, []int) {
+ return fileDescriptor_817c6a9aafd47c5b, []int{0, 11}
+}
+
+func (m *BuildEventId_ConfigurationId) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_BuildEventId_ConfigurationId.Unmarshal(m, b)
+}
+func (m *BuildEventId_ConfigurationId) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_BuildEventId_ConfigurationId.Marshal(b, m, deterministic)
+}
+func (m *BuildEventId_ConfigurationId) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_BuildEventId_ConfigurationId.Merge(m, src)
+}
+func (m *BuildEventId_ConfigurationId) XXX_Size() int {
+ return xxx_messageInfo_BuildEventId_ConfigurationId.Size(m)
+}
+func (m *BuildEventId_ConfigurationId) XXX_DiscardUnknown() {
+ xxx_messageInfo_BuildEventId_ConfigurationId.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BuildEventId_ConfigurationId proto.InternalMessageInfo
+
+func (m *BuildEventId_ConfigurationId) GetId() string {
+ if m != nil {
+ return m.Id
+ }
+ return ""
+}
+
+// Identifier of an event indicating that a target was built completely; this
+// does not include running the test if the target is a test target.
+type BuildEventId_TargetCompletedId struct {
+ Label string `protobuf:"bytes,1,opt,name=label,proto3" json:"label,omitempty"`
+ // The configuration for which the target was built.
+ Configuration *BuildEventId_ConfigurationId `protobuf:"bytes,3,opt,name=configuration,proto3" json:"configuration,omitempty"`
+ // If not empty, the id refers to the completion of the target for a given
+ // aspect.
+ Aspect string `protobuf:"bytes,2,opt,name=aspect,proto3" json:"aspect,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *BuildEventId_TargetCompletedId) Reset() { *m = BuildEventId_TargetCompletedId{} }
+func (m *BuildEventId_TargetCompletedId) String() string { return proto.CompactTextString(m) }
+func (*BuildEventId_TargetCompletedId) ProtoMessage() {}
+func (*BuildEventId_TargetCompletedId) Descriptor() ([]byte, []int) {
+ return fileDescriptor_817c6a9aafd47c5b, []int{0, 12}
+}
+
+func (m *BuildEventId_TargetCompletedId) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_BuildEventId_TargetCompletedId.Unmarshal(m, b)
+}
+func (m *BuildEventId_TargetCompletedId) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_BuildEventId_TargetCompletedId.Marshal(b, m, deterministic)
+}
+func (m *BuildEventId_TargetCompletedId) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_BuildEventId_TargetCompletedId.Merge(m, src)
+}
+func (m *BuildEventId_TargetCompletedId) XXX_Size() int {
+ return xxx_messageInfo_BuildEventId_TargetCompletedId.Size(m)
+}
+func (m *BuildEventId_TargetCompletedId) XXX_DiscardUnknown() {
+ xxx_messageInfo_BuildEventId_TargetCompletedId.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BuildEventId_TargetCompletedId proto.InternalMessageInfo
+
+func (m *BuildEventId_TargetCompletedId) GetLabel() string {
+ if m != nil {
+ return m.Label
+ }
+ return ""
+}
+
+func (m *BuildEventId_TargetCompletedId) GetConfiguration() *BuildEventId_ConfigurationId {
+ if m != nil {
+ return m.Configuration
+ }
+ return nil
+}
+
+func (m *BuildEventId_TargetCompletedId) GetAspect() string {
+ if m != nil {
+ return m.Aspect
+ }
+ return ""
+}
+
+// Identifier of an event reporting that an action was completed (not all
+// actions are reported, only the ones that can be considered important;
+// this includes all failed actions).
+type BuildEventId_ActionCompletedId struct {
+ PrimaryOutput string `protobuf:"bytes,1,opt,name=primary_output,json=primaryOutput,proto3" json:"primary_output,omitempty"`
+ // Optional, the label of the owner of the action, for reference.
+ Label string `protobuf:"bytes,2,opt,name=label,proto3" json:"label,omitempty"`
+ // Optional, the id of the configuration of the action owner.
+ Configuration *BuildEventId_ConfigurationId `protobuf:"bytes,3,opt,name=configuration,proto3" json:"configuration,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *BuildEventId_ActionCompletedId) Reset() { *m = BuildEventId_ActionCompletedId{} }
+func (m *BuildEventId_ActionCompletedId) String() string { return proto.CompactTextString(m) }
+func (*BuildEventId_ActionCompletedId) ProtoMessage() {}
+func (*BuildEventId_ActionCompletedId) Descriptor() ([]byte, []int) {
+ return fileDescriptor_817c6a9aafd47c5b, []int{0, 13}
+}
+
+func (m *BuildEventId_ActionCompletedId) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_BuildEventId_ActionCompletedId.Unmarshal(m, b)
+}
+func (m *BuildEventId_ActionCompletedId) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_BuildEventId_ActionCompletedId.Marshal(b, m, deterministic)
+}
+func (m *BuildEventId_ActionCompletedId) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_BuildEventId_ActionCompletedId.Merge(m, src)
+}
+func (m *BuildEventId_ActionCompletedId) XXX_Size() int {
+ return xxx_messageInfo_BuildEventId_ActionCompletedId.Size(m)
+}
+func (m *BuildEventId_ActionCompletedId) XXX_DiscardUnknown() {
+ xxx_messageInfo_BuildEventId_ActionCompletedId.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BuildEventId_ActionCompletedId proto.InternalMessageInfo
+
+func (m *BuildEventId_ActionCompletedId) GetPrimaryOutput() string {
+ if m != nil {
+ return m.PrimaryOutput
+ }
+ return ""
+}
+
+func (m *BuildEventId_ActionCompletedId) GetLabel() string {
+ if m != nil {
+ return m.Label
+ }
+ return ""
+}
+
+func (m *BuildEventId_ActionCompletedId) GetConfiguration() *BuildEventId_ConfigurationId {
+ if m != nil {
+ return m.Configuration
+ }
+ return nil
+}
+
+// Identifier of an event reporting an event associated with an unconfigured
+// label. Usually, this indicates a failure due to a missing input file. In
+// any case, it will report some form of error (i.e., the payload will be an
+// Aborted event); there are no regular events using this identifier. The
+// purpose of those events is to serve as the root cause of a failed target.
+type BuildEventId_UnconfiguredLabelId struct {
+ Label string `protobuf:"bytes,1,opt,name=label,proto3" json:"label,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *BuildEventId_UnconfiguredLabelId) Reset() { *m = BuildEventId_UnconfiguredLabelId{} }
+func (m *BuildEventId_UnconfiguredLabelId) String() string { return proto.CompactTextString(m) }
+func (*BuildEventId_UnconfiguredLabelId) ProtoMessage() {}
+func (*BuildEventId_UnconfiguredLabelId) Descriptor() ([]byte, []int) {
+ return fileDescriptor_817c6a9aafd47c5b, []int{0, 14}
+}
+
+func (m *BuildEventId_UnconfiguredLabelId) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_BuildEventId_UnconfiguredLabelId.Unmarshal(m, b)
+}
+func (m *BuildEventId_UnconfiguredLabelId) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_BuildEventId_UnconfiguredLabelId.Marshal(b, m, deterministic)
+}
+func (m *BuildEventId_UnconfiguredLabelId) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_BuildEventId_UnconfiguredLabelId.Merge(m, src)
+}
+func (m *BuildEventId_UnconfiguredLabelId) XXX_Size() int {
+ return xxx_messageInfo_BuildEventId_UnconfiguredLabelId.Size(m)
+}
+func (m *BuildEventId_UnconfiguredLabelId) XXX_DiscardUnknown() {
+ xxx_messageInfo_BuildEventId_UnconfiguredLabelId.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BuildEventId_UnconfiguredLabelId proto.InternalMessageInfo
+
+func (m *BuildEventId_UnconfiguredLabelId) GetLabel() string {
+ if m != nil {
+ return m.Label
+ }
+ return ""
+}
+
+// Identifier of an event reporting an event associated with a configured
+// label, usually a visibility error. In any case, an event with such an
+// id will always report some form of error (i.e., the payload will be an
+// Aborted event); there are no regular events using this identifier.
+type BuildEventId_ConfiguredLabelId struct {
+ Label string `protobuf:"bytes,1,opt,name=label,proto3" json:"label,omitempty"`
+ Configuration *BuildEventId_ConfigurationId `protobuf:"bytes,2,opt,name=configuration,proto3" json:"configuration,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *BuildEventId_ConfiguredLabelId) Reset() { *m = BuildEventId_ConfiguredLabelId{} }
+func (m *BuildEventId_ConfiguredLabelId) String() string { return proto.CompactTextString(m) }
+func (*BuildEventId_ConfiguredLabelId) ProtoMessage() {}
+func (*BuildEventId_ConfiguredLabelId) Descriptor() ([]byte, []int) {
+ return fileDescriptor_817c6a9aafd47c5b, []int{0, 15}
+}
+
+func (m *BuildEventId_ConfiguredLabelId) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_BuildEventId_ConfiguredLabelId.Unmarshal(m, b)
+}
+func (m *BuildEventId_ConfiguredLabelId) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_BuildEventId_ConfiguredLabelId.Marshal(b, m, deterministic)
+}
+func (m *BuildEventId_ConfiguredLabelId) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_BuildEventId_ConfiguredLabelId.Merge(m, src)
+}
+func (m *BuildEventId_ConfiguredLabelId) XXX_Size() int {
+ return xxx_messageInfo_BuildEventId_ConfiguredLabelId.Size(m)
+}
+func (m *BuildEventId_ConfiguredLabelId) XXX_DiscardUnknown() {
+ xxx_messageInfo_BuildEventId_ConfiguredLabelId.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BuildEventId_ConfiguredLabelId proto.InternalMessageInfo
+
+func (m *BuildEventId_ConfiguredLabelId) GetLabel() string {
+ if m != nil {
+ return m.Label
+ }
+ return ""
+}
+
+func (m *BuildEventId_ConfiguredLabelId) GetConfiguration() *BuildEventId_ConfigurationId {
+ if m != nil {
+ return m.Configuration
+ }
+ return nil
+}
+
+// Identifier of an event reporting on an individual test run. The label
+// identifies the test that is reported about, the remaining fields are
+// in such a way as to uniquely identify the action within a build. In fact,
+// attempts for the same test, run, shard triple are counted sequentially,
+// starting with 1.
+type BuildEventId_TestResultId struct {
+ Label string `protobuf:"bytes,1,opt,name=label,proto3" json:"label,omitempty"`
+ Configuration *BuildEventId_ConfigurationId `protobuf:"bytes,5,opt,name=configuration,proto3" json:"configuration,omitempty"`
+ Run int32 `protobuf:"varint,2,opt,name=run,proto3" json:"run,omitempty"`
+ Shard int32 `protobuf:"varint,3,opt,name=shard,proto3" json:"shard,omitempty"`
+ Attempt int32 `protobuf:"varint,4,opt,name=attempt,proto3" json:"attempt,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *BuildEventId_TestResultId) Reset() { *m = BuildEventId_TestResultId{} }
+func (m *BuildEventId_TestResultId) String() string { return proto.CompactTextString(m) }
+func (*BuildEventId_TestResultId) ProtoMessage() {}
+func (*BuildEventId_TestResultId) Descriptor() ([]byte, []int) {
+ return fileDescriptor_817c6a9aafd47c5b, []int{0, 16}
+}
+
+func (m *BuildEventId_TestResultId) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_BuildEventId_TestResultId.Unmarshal(m, b)
+}
+func (m *BuildEventId_TestResultId) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_BuildEventId_TestResultId.Marshal(b, m, deterministic)
+}
+func (m *BuildEventId_TestResultId) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_BuildEventId_TestResultId.Merge(m, src)
+}
+func (m *BuildEventId_TestResultId) XXX_Size() int {
+ return xxx_messageInfo_BuildEventId_TestResultId.Size(m)
+}
+func (m *BuildEventId_TestResultId) XXX_DiscardUnknown() {
+ xxx_messageInfo_BuildEventId_TestResultId.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BuildEventId_TestResultId proto.InternalMessageInfo
+
+func (m *BuildEventId_TestResultId) GetLabel() string {
+ if m != nil {
+ return m.Label
+ }
+ return ""
+}
+
+func (m *BuildEventId_TestResultId) GetConfiguration() *BuildEventId_ConfigurationId {
+ if m != nil {
+ return m.Configuration
+ }
+ return nil
+}
+
+func (m *BuildEventId_TestResultId) GetRun() int32 {
+ if m != nil {
+ return m.Run
+ }
+ return 0
+}
+
+func (m *BuildEventId_TestResultId) GetShard() int32 {
+ if m != nil {
+ return m.Shard
+ }
+ return 0
+}
+
+func (m *BuildEventId_TestResultId) GetAttempt() int32 {
+ if m != nil {
+ return m.Attempt
+ }
+ return 0
+}
+
+// Identifier of an event reporting the summary of a test.
+type BuildEventId_TestSummaryId struct {
+ Label string `protobuf:"bytes,1,opt,name=label,proto3" json:"label,omitempty"`
+ Configuration *BuildEventId_ConfigurationId `protobuf:"bytes,2,opt,name=configuration,proto3" json:"configuration,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *BuildEventId_TestSummaryId) Reset() { *m = BuildEventId_TestSummaryId{} }
+func (m *BuildEventId_TestSummaryId) String() string { return proto.CompactTextString(m) }
+func (*BuildEventId_TestSummaryId) ProtoMessage() {}
+func (*BuildEventId_TestSummaryId) Descriptor() ([]byte, []int) {
+ return fileDescriptor_817c6a9aafd47c5b, []int{0, 17}
+}
+
+func (m *BuildEventId_TestSummaryId) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_BuildEventId_TestSummaryId.Unmarshal(m, b)
+}
+func (m *BuildEventId_TestSummaryId) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_BuildEventId_TestSummaryId.Marshal(b, m, deterministic)
+}
+func (m *BuildEventId_TestSummaryId) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_BuildEventId_TestSummaryId.Merge(m, src)
+}
+func (m *BuildEventId_TestSummaryId) XXX_Size() int {
+ return xxx_messageInfo_BuildEventId_TestSummaryId.Size(m)
+}
+func (m *BuildEventId_TestSummaryId) XXX_DiscardUnknown() {
+ xxx_messageInfo_BuildEventId_TestSummaryId.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BuildEventId_TestSummaryId proto.InternalMessageInfo
+
+func (m *BuildEventId_TestSummaryId) GetLabel() string {
+ if m != nil {
+ return m.Label
+ }
+ return ""
+}
+
+func (m *BuildEventId_TestSummaryId) GetConfiguration() *BuildEventId_ConfigurationId {
+ if m != nil {
+ return m.Configuration
+ }
+ return nil
+}
+
+// Identifier of the BuildFinished event, indicating the end of a build.
+type BuildEventId_BuildFinishedId struct {
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *BuildEventId_BuildFinishedId) Reset() { *m = BuildEventId_BuildFinishedId{} }
+func (m *BuildEventId_BuildFinishedId) String() string { return proto.CompactTextString(m) }
+func (*BuildEventId_BuildFinishedId) ProtoMessage() {}
+func (*BuildEventId_BuildFinishedId) Descriptor() ([]byte, []int) {
+ return fileDescriptor_817c6a9aafd47c5b, []int{0, 18}
+}
+
+func (m *BuildEventId_BuildFinishedId) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_BuildEventId_BuildFinishedId.Unmarshal(m, b)
+}
+func (m *BuildEventId_BuildFinishedId) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_BuildEventId_BuildFinishedId.Marshal(b, m, deterministic)
+}
+func (m *BuildEventId_BuildFinishedId) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_BuildEventId_BuildFinishedId.Merge(m, src)
+}
+func (m *BuildEventId_BuildFinishedId) XXX_Size() int {
+ return xxx_messageInfo_BuildEventId_BuildFinishedId.Size(m)
+}
+func (m *BuildEventId_BuildFinishedId) XXX_DiscardUnknown() {
+ xxx_messageInfo_BuildEventId_BuildFinishedId.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BuildEventId_BuildFinishedId proto.InternalMessageInfo
+
+// Identifier of an event providing additional logs/statistics after
+// completion of the build.
+type BuildEventId_BuildToolLogsId struct {
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *BuildEventId_BuildToolLogsId) Reset() { *m = BuildEventId_BuildToolLogsId{} }
+func (m *BuildEventId_BuildToolLogsId) String() string { return proto.CompactTextString(m) }
+func (*BuildEventId_BuildToolLogsId) ProtoMessage() {}
+func (*BuildEventId_BuildToolLogsId) Descriptor() ([]byte, []int) {
+ return fileDescriptor_817c6a9aafd47c5b, []int{0, 19}
+}
+
+func (m *BuildEventId_BuildToolLogsId) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_BuildEventId_BuildToolLogsId.Unmarshal(m, b)
+}
+func (m *BuildEventId_BuildToolLogsId) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_BuildEventId_BuildToolLogsId.Marshal(b, m, deterministic)
+}
+func (m *BuildEventId_BuildToolLogsId) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_BuildEventId_BuildToolLogsId.Merge(m, src)
+}
+func (m *BuildEventId_BuildToolLogsId) XXX_Size() int {
+ return xxx_messageInfo_BuildEventId_BuildToolLogsId.Size(m)
+}
+func (m *BuildEventId_BuildToolLogsId) XXX_DiscardUnknown() {
+ xxx_messageInfo_BuildEventId_BuildToolLogsId.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BuildEventId_BuildToolLogsId proto.InternalMessageInfo
+
+// Identifier of an event providing build metrics after completion
+// of the build.
+type BuildEventId_BuildMetricsId struct {
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *BuildEventId_BuildMetricsId) Reset() { *m = BuildEventId_BuildMetricsId{} }
+func (m *BuildEventId_BuildMetricsId) String() string { return proto.CompactTextString(m) }
+func (*BuildEventId_BuildMetricsId) ProtoMessage() {}
+func (*BuildEventId_BuildMetricsId) Descriptor() ([]byte, []int) {
+ return fileDescriptor_817c6a9aafd47c5b, []int{0, 20}
+}
+
+func (m *BuildEventId_BuildMetricsId) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_BuildEventId_BuildMetricsId.Unmarshal(m, b)
+}
+func (m *BuildEventId_BuildMetricsId) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_BuildEventId_BuildMetricsId.Marshal(b, m, deterministic)
+}
+func (m *BuildEventId_BuildMetricsId) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_BuildEventId_BuildMetricsId.Merge(m, src)
+}
+func (m *BuildEventId_BuildMetricsId) XXX_Size() int {
+ return xxx_messageInfo_BuildEventId_BuildMetricsId.Size(m)
+}
+func (m *BuildEventId_BuildMetricsId) XXX_DiscardUnknown() {
+ xxx_messageInfo_BuildEventId_BuildMetricsId.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BuildEventId_BuildMetricsId proto.InternalMessageInfo
+
+// Payload of an event summarizing the progress of the build so far. Those
+// events are also used to be parents of events where the more logical parent
+// event cannot be posted yet as the needed information is not yet complete.
+type Progress struct {
+ // The next chunk of stdout that bazel produced since the last progress event
+ // or the beginning of the build.
+ Stdout string `protobuf:"bytes,1,opt,name=stdout,proto3" json:"stdout,omitempty"`
+ // The next chunk of stderr that bazel produced since the last progress event
+ // or the beginning of the build.
+ Stderr string `protobuf:"bytes,2,opt,name=stderr,proto3" json:"stderr,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *Progress) Reset() { *m = Progress{} }
+func (m *Progress) String() string { return proto.CompactTextString(m) }
+func (*Progress) ProtoMessage() {}
+func (*Progress) Descriptor() ([]byte, []int) {
+ return fileDescriptor_817c6a9aafd47c5b, []int{1}
+}
+
+func (m *Progress) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_Progress.Unmarshal(m, b)
+}
+func (m *Progress) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_Progress.Marshal(b, m, deterministic)
+}
+func (m *Progress) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Progress.Merge(m, src)
+}
+func (m *Progress) XXX_Size() int {
+ return xxx_messageInfo_Progress.Size(m)
+}
+func (m *Progress) XXX_DiscardUnknown() {
+ xxx_messageInfo_Progress.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Progress proto.InternalMessageInfo
+
+func (m *Progress) GetStdout() string {
+ if m != nil {
+ return m.Stdout
+ }
+ return ""
+}
+
+func (m *Progress) GetStderr() string {
+ if m != nil {
+ return m.Stderr
+ }
+ return ""
+}
+
+// Payload of an event indicating that an expected event will not come, as
+// the build is aborted prematurely for some reason.
+type Aborted struct {
+ Reason Aborted_AbortReason `protobuf:"varint,1,opt,name=reason,proto3,enum=build_event_stream.Aborted_AbortReason" json:"reason,omitempty"`
+ // A human readable description with more details about there reason, where
+ // available and useful.
+ Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *Aborted) Reset() { *m = Aborted{} }
+func (m *Aborted) String() string { return proto.CompactTextString(m) }
+func (*Aborted) ProtoMessage() {}
+func (*Aborted) Descriptor() ([]byte, []int) {
+ return fileDescriptor_817c6a9aafd47c5b, []int{2}
+}
+
+func (m *Aborted) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_Aborted.Unmarshal(m, b)
+}
+func (m *Aborted) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_Aborted.Marshal(b, m, deterministic)
+}
+func (m *Aborted) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Aborted.Merge(m, src)
+}
+func (m *Aborted) XXX_Size() int {
+ return xxx_messageInfo_Aborted.Size(m)
+}
+func (m *Aborted) XXX_DiscardUnknown() {
+ xxx_messageInfo_Aborted.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Aborted proto.InternalMessageInfo
+
+func (m *Aborted) GetReason() Aborted_AbortReason {
+ if m != nil {
+ return m.Reason
+ }
+ return Aborted_UNKNOWN
+}
+
+func (m *Aborted) GetDescription() string {
+ if m != nil {
+ return m.Description
+ }
+ return ""
+}
+
+// Payload of an event indicating the beginning of a new build. Usually, events
+// of those type start a new build-event stream. The target pattern requested
+// to be build is contained in one of the announced child events; it is an
+// invariant that precisely one of the announced child events has a non-empty
+// target pattern.
+type BuildStarted struct {
+ Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"`
+ // Start of the build in ms since the epoch.
+ // TODO(buchgr): Use google.protobuf.TimeStamp once bazel's protoc supports
+ // it.
+ StartTimeMillis int64 `protobuf:"varint,2,opt,name=start_time_millis,json=startTimeMillis,proto3" json:"start_time_millis,omitempty"`
+ // Version of the build tool that is running.
+ BuildToolVersion string `protobuf:"bytes,3,opt,name=build_tool_version,json=buildToolVersion,proto3" json:"build_tool_version,omitempty"`
+ // A human-readable description of all the non-default option settings
+ OptionsDescription string `protobuf:"bytes,4,opt,name=options_description,json=optionsDescription,proto3" json:"options_description,omitempty"`
+ // The name of the command that the user invoked.
+ Command string `protobuf:"bytes,5,opt,name=command,proto3" json:"command,omitempty"`
+ // The working directory from which the build tool was invoked.
+ WorkingDirectory string `protobuf:"bytes,6,opt,name=working_directory,json=workingDirectory,proto3" json:"working_directory,omitempty"`
+ // The directory of the workspace.
+ WorkspaceDirectory string `protobuf:"bytes,7,opt,name=workspace_directory,json=workspaceDirectory,proto3" json:"workspace_directory,omitempty"`
+ // The process ID of the Bazel server.
+ ServerPid int64 `protobuf:"varint,8,opt,name=server_pid,json=serverPid,proto3" json:"server_pid,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *BuildStarted) Reset() { *m = BuildStarted{} }
+func (m *BuildStarted) String() string { return proto.CompactTextString(m) }
+func (*BuildStarted) ProtoMessage() {}
+func (*BuildStarted) Descriptor() ([]byte, []int) {
+ return fileDescriptor_817c6a9aafd47c5b, []int{3}
+}
+
+func (m *BuildStarted) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_BuildStarted.Unmarshal(m, b)
+}
+func (m *BuildStarted) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_BuildStarted.Marshal(b, m, deterministic)
+}
+func (m *BuildStarted) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_BuildStarted.Merge(m, src)
+}
+func (m *BuildStarted) XXX_Size() int {
+ return xxx_messageInfo_BuildStarted.Size(m)
+}
+func (m *BuildStarted) XXX_DiscardUnknown() {
+ xxx_messageInfo_BuildStarted.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BuildStarted proto.InternalMessageInfo
+
+func (m *BuildStarted) GetUuid() string {
+ if m != nil {
+ return m.Uuid
+ }
+ return ""
+}
+
+func (m *BuildStarted) GetStartTimeMillis() int64 {
+ if m != nil {
+ return m.StartTimeMillis
+ }
+ return 0
+}
+
+func (m *BuildStarted) GetBuildToolVersion() string {
+ if m != nil {
+ return m.BuildToolVersion
+ }
+ return ""
+}
+
+func (m *BuildStarted) GetOptionsDescription() string {
+ if m != nil {
+ return m.OptionsDescription
+ }
+ return ""
+}
+
+func (m *BuildStarted) GetCommand() string {
+ if m != nil {
+ return m.Command
+ }
+ return ""
+}
+
+func (m *BuildStarted) GetWorkingDirectory() string {
+ if m != nil {
+ return m.WorkingDirectory
+ }
+ return ""
+}
+
+func (m *BuildStarted) GetWorkspaceDirectory() string {
+ if m != nil {
+ return m.WorkspaceDirectory
+ }
+ return ""
+}
+
+func (m *BuildStarted) GetServerPid() int64 {
+ if m != nil {
+ return m.ServerPid
+ }
+ return 0
+}
+
+// Payload of an event reporting the command-line of the invocation as
+// originally received by the server. Note that this is not the command-line
+// given by the user, as the client adds information about the invocation,
+// like name and relevant entries of rc-files and client environment variables.
+// However, it does contain enough information to reproduce the build
+// invocation.
+type UnstructuredCommandLine struct {
+ Args []string `protobuf:"bytes,1,rep,name=args,proto3" json:"args,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *UnstructuredCommandLine) Reset() { *m = UnstructuredCommandLine{} }
+func (m *UnstructuredCommandLine) String() string { return proto.CompactTextString(m) }
+func (*UnstructuredCommandLine) ProtoMessage() {}
+func (*UnstructuredCommandLine) Descriptor() ([]byte, []int) {
+ return fileDescriptor_817c6a9aafd47c5b, []int{4}
+}
+
+func (m *UnstructuredCommandLine) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_UnstructuredCommandLine.Unmarshal(m, b)
+}
+func (m *UnstructuredCommandLine) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_UnstructuredCommandLine.Marshal(b, m, deterministic)
+}
+func (m *UnstructuredCommandLine) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_UnstructuredCommandLine.Merge(m, src)
+}
+func (m *UnstructuredCommandLine) XXX_Size() int {
+ return xxx_messageInfo_UnstructuredCommandLine.Size(m)
+}
+func (m *UnstructuredCommandLine) XXX_DiscardUnknown() {
+ xxx_messageInfo_UnstructuredCommandLine.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_UnstructuredCommandLine proto.InternalMessageInfo
+
+func (m *UnstructuredCommandLine) GetArgs() []string {
+ if m != nil {
+ return m.Args
+ }
+ return nil
+}
+
+// Payload of an event reporting on the parsed options, grouped in various ways.
+type OptionsParsed struct {
+ StartupOptions []string `protobuf:"bytes,1,rep,name=startup_options,json=startupOptions,proto3" json:"startup_options,omitempty"`
+ ExplicitStartupOptions []string `protobuf:"bytes,2,rep,name=explicit_startup_options,json=explicitStartupOptions,proto3" json:"explicit_startup_options,omitempty"`
+ CmdLine []string `protobuf:"bytes,3,rep,name=cmd_line,json=cmdLine,proto3" json:"cmd_line,omitempty"`
+ ExplicitCmdLine []string `protobuf:"bytes,4,rep,name=explicit_cmd_line,json=explicitCmdLine,proto3" json:"explicit_cmd_line,omitempty"`
+ InvocationPolicy *invocation_policy.InvocationPolicy `protobuf:"bytes,5,opt,name=invocation_policy,json=invocationPolicy,proto3" json:"invocation_policy,omitempty"`
+ ToolTag string `protobuf:"bytes,6,opt,name=tool_tag,json=toolTag,proto3" json:"tool_tag,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OptionsParsed) Reset() { *m = OptionsParsed{} }
+func (m *OptionsParsed) String() string { return proto.CompactTextString(m) }
+func (*OptionsParsed) ProtoMessage() {}
+func (*OptionsParsed) Descriptor() ([]byte, []int) {
+ return fileDescriptor_817c6a9aafd47c5b, []int{5}
+}
+
+func (m *OptionsParsed) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OptionsParsed.Unmarshal(m, b)
+}
+func (m *OptionsParsed) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OptionsParsed.Marshal(b, m, deterministic)
+}
+func (m *OptionsParsed) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OptionsParsed.Merge(m, src)
+}
+func (m *OptionsParsed) XXX_Size() int {
+ return xxx_messageInfo_OptionsParsed.Size(m)
+}
+func (m *OptionsParsed) XXX_DiscardUnknown() {
+ xxx_messageInfo_OptionsParsed.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OptionsParsed proto.InternalMessageInfo
+
+func (m *OptionsParsed) GetStartupOptions() []string {
+ if m != nil {
+ return m.StartupOptions
+ }
+ return nil
+}
+
+func (m *OptionsParsed) GetExplicitStartupOptions() []string {
+ if m != nil {
+ return m.ExplicitStartupOptions
+ }
+ return nil
+}
+
+func (m *OptionsParsed) GetCmdLine() []string {
+ if m != nil {
+ return m.CmdLine
+ }
+ return nil
+}
+
+func (m *OptionsParsed) GetExplicitCmdLine() []string {
+ if m != nil {
+ return m.ExplicitCmdLine
+ }
+ return nil
+}
+
+func (m *OptionsParsed) GetInvocationPolicy() *invocation_policy.InvocationPolicy {
+ if m != nil {
+ return m.InvocationPolicy
+ }
+ return nil
+}
+
+func (m *OptionsParsed) GetToolTag() string {
+ if m != nil {
+ return m.ToolTag
+ }
+ return ""
+}
+
+// Payload of an event indicating that an external resource was fetched. This
+// event will only occur in streams where an actual fetch happened, not in ones
+// where a cached copy of the entity to be fetched was used.
+type Fetch struct {
+ Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *Fetch) Reset() { *m = Fetch{} }
+func (m *Fetch) String() string { return proto.CompactTextString(m) }
+func (*Fetch) ProtoMessage() {}
+func (*Fetch) Descriptor() ([]byte, []int) {
+ return fileDescriptor_817c6a9aafd47c5b, []int{6}
+}
+
+func (m *Fetch) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_Fetch.Unmarshal(m, b)
+}
+func (m *Fetch) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_Fetch.Marshal(b, m, deterministic)
+}
+func (m *Fetch) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Fetch.Merge(m, src)
+}
+func (m *Fetch) XXX_Size() int {
+ return xxx_messageInfo_Fetch.Size(m)
+}
+func (m *Fetch) XXX_DiscardUnknown() {
+ xxx_messageInfo_Fetch.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Fetch proto.InternalMessageInfo
+
+func (m *Fetch) GetSuccess() bool {
+ if m != nil {
+ return m.Success
+ }
+ return false
+}
+
+// Payload of an event reporting the workspace status. Key-value pairs can be
+// provided by specifying the workspace_status_command to an executable that
+// returns one key-value pair per line of output (key and value separated by a
+// space).
+type WorkspaceStatus struct {
+ Item []*WorkspaceStatus_Item `protobuf:"bytes,1,rep,name=item,proto3" json:"item,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *WorkspaceStatus) Reset() { *m = WorkspaceStatus{} }
+func (m *WorkspaceStatus) String() string { return proto.CompactTextString(m) }
+func (*WorkspaceStatus) ProtoMessage() {}
+func (*WorkspaceStatus) Descriptor() ([]byte, []int) {
+ return fileDescriptor_817c6a9aafd47c5b, []int{7}
+}
+
+func (m *WorkspaceStatus) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_WorkspaceStatus.Unmarshal(m, b)
+}
+func (m *WorkspaceStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_WorkspaceStatus.Marshal(b, m, deterministic)
+}
+func (m *WorkspaceStatus) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_WorkspaceStatus.Merge(m, src)
+}
+func (m *WorkspaceStatus) XXX_Size() int {
+ return xxx_messageInfo_WorkspaceStatus.Size(m)
+}
+func (m *WorkspaceStatus) XXX_DiscardUnknown() {
+ xxx_messageInfo_WorkspaceStatus.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_WorkspaceStatus proto.InternalMessageInfo
+
+func (m *WorkspaceStatus) GetItem() []*WorkspaceStatus_Item {
+ if m != nil {
+ return m.Item
+ }
+ return nil
+}
+
+type WorkspaceStatus_Item struct {
+ Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
+ Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *WorkspaceStatus_Item) Reset() { *m = WorkspaceStatus_Item{} }
+func (m *WorkspaceStatus_Item) String() string { return proto.CompactTextString(m) }
+func (*WorkspaceStatus_Item) ProtoMessage() {}
+func (*WorkspaceStatus_Item) Descriptor() ([]byte, []int) {
+ return fileDescriptor_817c6a9aafd47c5b, []int{7, 0}
+}
+
+func (m *WorkspaceStatus_Item) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_WorkspaceStatus_Item.Unmarshal(m, b)
+}
+func (m *WorkspaceStatus_Item) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_WorkspaceStatus_Item.Marshal(b, m, deterministic)
+}
+func (m *WorkspaceStatus_Item) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_WorkspaceStatus_Item.Merge(m, src)
+}
+func (m *WorkspaceStatus_Item) XXX_Size() int {
+ return xxx_messageInfo_WorkspaceStatus_Item.Size(m)
+}
+func (m *WorkspaceStatus_Item) XXX_DiscardUnknown() {
+ xxx_messageInfo_WorkspaceStatus_Item.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_WorkspaceStatus_Item proto.InternalMessageInfo
+
+func (m *WorkspaceStatus_Item) GetKey() string {
+ if m != nil {
+ return m.Key
+ }
+ return ""
+}
+
+func (m *WorkspaceStatus_Item) GetValue() string {
+ if m != nil {
+ return m.Value
+ }
+ return ""
+}
+
+// Payload of an event reporting details of a given configuration.
+type Configuration struct {
+ Mnemonic string `protobuf:"bytes,1,opt,name=mnemonic,proto3" json:"mnemonic,omitempty"`
+ PlatformName string `protobuf:"bytes,2,opt,name=platform_name,json=platformName,proto3" json:"platform_name,omitempty"`
+ Cpu string `protobuf:"bytes,3,opt,name=cpu,proto3" json:"cpu,omitempty"`
+ MakeVariable map[string]string `protobuf:"bytes,4,rep,name=make_variable,json=makeVariable,proto3" json:"make_variable,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *Configuration) Reset() { *m = Configuration{} }
+func (m *Configuration) String() string { return proto.CompactTextString(m) }
+func (*Configuration) ProtoMessage() {}
+func (*Configuration) Descriptor() ([]byte, []int) {
+ return fileDescriptor_817c6a9aafd47c5b, []int{8}
+}
+
+func (m *Configuration) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_Configuration.Unmarshal(m, b)
+}
+func (m *Configuration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_Configuration.Marshal(b, m, deterministic)
+}
+func (m *Configuration) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Configuration.Merge(m, src)
+}
+func (m *Configuration) XXX_Size() int {
+ return xxx_messageInfo_Configuration.Size(m)
+}
+func (m *Configuration) XXX_DiscardUnknown() {
+ xxx_messageInfo_Configuration.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Configuration proto.InternalMessageInfo
+
+func (m *Configuration) GetMnemonic() string {
+ if m != nil {
+ return m.Mnemonic
+ }
+ return ""
+}
+
+func (m *Configuration) GetPlatformName() string {
+ if m != nil {
+ return m.PlatformName
+ }
+ return ""
+}
+
+func (m *Configuration) GetCpu() string {
+ if m != nil {
+ return m.Cpu
+ }
+ return ""
+}
+
+func (m *Configuration) GetMakeVariable() map[string]string {
+ if m != nil {
+ return m.MakeVariable
+ }
+ return nil
+}
+
+// Payload of the event indicating the expansion of a target pattern.
+// The main information is in the chaining part: the id will contain the
+// target pattern that was expanded and the children id will contain the
+// target or target pattern it was expanded to.
+type PatternExpanded struct {
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *PatternExpanded) Reset() { *m = PatternExpanded{} }
+func (m *PatternExpanded) String() string { return proto.CompactTextString(m) }
+func (*PatternExpanded) ProtoMessage() {}
+func (*PatternExpanded) Descriptor() ([]byte, []int) {
+ return fileDescriptor_817c6a9aafd47c5b, []int{9}
+}
+
+func (m *PatternExpanded) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_PatternExpanded.Unmarshal(m, b)
+}
+func (m *PatternExpanded) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_PatternExpanded.Marshal(b, m, deterministic)
+}
+func (m *PatternExpanded) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_PatternExpanded.Merge(m, src)
+}
+func (m *PatternExpanded) XXX_Size() int {
+ return xxx_messageInfo_PatternExpanded.Size(m)
+}
+func (m *PatternExpanded) XXX_DiscardUnknown() {
+ xxx_messageInfo_PatternExpanded.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_PatternExpanded proto.InternalMessageInfo
+
+// Payload of the event indicating that the configurations for a target have
+// been identified. As with pattern expansion the main information is in the
+// chaining part: the id will contain the target that was configured and the
+// children id will contain the configured targets it was configured to.
+type TargetConfigured struct {
+ // The kind of target (e.g., e.g. "cc_library rule", "source file",
+ // "generated file") where the completion is reported.
+ TargetKind string `protobuf:"bytes,1,opt,name=target_kind,json=targetKind,proto3" json:"target_kind,omitempty"`
+ // The size of the test, if the target is a test target. Unset otherwise.
+ TestSize TestSize `protobuf:"varint,2,opt,name=test_size,json=testSize,proto3,enum=build_event_stream.TestSize" json:"test_size,omitempty"`
+ // List of all tags associated with this target (for all possible
+ // configurations).
+ Tag []string `protobuf:"bytes,3,rep,name=tag,proto3" json:"tag,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *TargetConfigured) Reset() { *m = TargetConfigured{} }
+func (m *TargetConfigured) String() string { return proto.CompactTextString(m) }
+func (*TargetConfigured) ProtoMessage() {}
+func (*TargetConfigured) Descriptor() ([]byte, []int) {
+ return fileDescriptor_817c6a9aafd47c5b, []int{10}
+}
+
+func (m *TargetConfigured) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_TargetConfigured.Unmarshal(m, b)
+}
+func (m *TargetConfigured) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_TargetConfigured.Marshal(b, m, deterministic)
+}
+func (m *TargetConfigured) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_TargetConfigured.Merge(m, src)
+}
+func (m *TargetConfigured) XXX_Size() int {
+ return xxx_messageInfo_TargetConfigured.Size(m)
+}
+func (m *TargetConfigured) XXX_DiscardUnknown() {
+ xxx_messageInfo_TargetConfigured.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TargetConfigured proto.InternalMessageInfo
+
+func (m *TargetConfigured) GetTargetKind() string {
+ if m != nil {
+ return m.TargetKind
+ }
+ return ""
+}
+
+func (m *TargetConfigured) GetTestSize() TestSize {
+ if m != nil {
+ return m.TestSize
+ }
+ return TestSize_UNKNOWN
+}
+
+func (m *TargetConfigured) GetTag() []string {
+ if m != nil {
+ return m.Tag
+ }
+ return nil
+}
+
+type File struct {
+ // identifier indicating the nature of the file (e.g., "stdout", "stderr")
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+ // Types that are valid to be assigned to File:
+ // *File_Uri
+ // *File_Contents
+ File isFile_File `protobuf_oneof:"file"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *File) Reset() { *m = File{} }
+func (m *File) String() string { return proto.CompactTextString(m) }
+func (*File) ProtoMessage() {}
+func (*File) Descriptor() ([]byte, []int) {
+ return fileDescriptor_817c6a9aafd47c5b, []int{11}
+}
+
+func (m *File) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_File.Unmarshal(m, b)
+}
+func (m *File) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_File.Marshal(b, m, deterministic)
+}
+func (m *File) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_File.Merge(m, src)
+}
+func (m *File) XXX_Size() int {
+ return xxx_messageInfo_File.Size(m)
+}
+func (m *File) XXX_DiscardUnknown() {
+ xxx_messageInfo_File.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_File proto.InternalMessageInfo
+
+func (m *File) GetName() string {
+ if m != nil {
+ return m.Name
+ }
+ return ""
+}
+
+type isFile_File interface {
+ isFile_File()
+}
+
+type File_Uri struct {
+ Uri string `protobuf:"bytes,2,opt,name=uri,proto3,oneof"`
+}
+
+type File_Contents struct {
+ Contents []byte `protobuf:"bytes,3,opt,name=contents,proto3,oneof"`
+}
+
+func (*File_Uri) isFile_File() {}
+
+func (*File_Contents) isFile_File() {}
+
+func (m *File) GetFile() isFile_File {
+ if m != nil {
+ return m.File
+ }
+ return nil
+}
+
+func (m *File) GetUri() string {
+ if x, ok := m.GetFile().(*File_Uri); ok {
+ return x.Uri
+ }
+ return ""
+}
+
+func (m *File) GetContents() []byte {
+ if x, ok := m.GetFile().(*File_Contents); ok {
+ return x.Contents
+ }
+ return nil
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*File) XXX_OneofWrappers() []interface{} {
+ return []interface{}{
+ (*File_Uri)(nil),
+ (*File_Contents)(nil),
+ }
+}
+
+// Payload of a message to describe a set of files, usually build artifacts, to
+// be referred to later by their name. In this way, files that occur identically
+// as outputs of several targets have to be named only once.
+type NamedSetOfFiles struct {
+ // Files that belong to this named set of files.
+ Files []*File `protobuf:"bytes,1,rep,name=files,proto3" json:"files,omitempty"`
+ // Other named sets whose members also belong to this set.
+ FileSets []*BuildEventId_NamedSetOfFilesId `protobuf:"bytes,2,rep,name=file_sets,json=fileSets,proto3" json:"file_sets,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *NamedSetOfFiles) Reset() { *m = NamedSetOfFiles{} }
+func (m *NamedSetOfFiles) String() string { return proto.CompactTextString(m) }
+func (*NamedSetOfFiles) ProtoMessage() {}
+func (*NamedSetOfFiles) Descriptor() ([]byte, []int) {
+ return fileDescriptor_817c6a9aafd47c5b, []int{12}
+}
+
+func (m *NamedSetOfFiles) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_NamedSetOfFiles.Unmarshal(m, b)
+}
+func (m *NamedSetOfFiles) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_NamedSetOfFiles.Marshal(b, m, deterministic)
+}
+func (m *NamedSetOfFiles) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_NamedSetOfFiles.Merge(m, src)
+}
+func (m *NamedSetOfFiles) XXX_Size() int {
+ return xxx_messageInfo_NamedSetOfFiles.Size(m)
+}
+func (m *NamedSetOfFiles) XXX_DiscardUnknown() {
+ xxx_messageInfo_NamedSetOfFiles.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_NamedSetOfFiles proto.InternalMessageInfo
+
+func (m *NamedSetOfFiles) GetFiles() []*File {
+ if m != nil {
+ return m.Files
+ }
+ return nil
+}
+
+func (m *NamedSetOfFiles) GetFileSets() []*BuildEventId_NamedSetOfFilesId {
+ if m != nil {
+ return m.FileSets
+ }
+ return nil
+}
+
+// Payload of the event indicating the completion of an action. The main purpose
+// of posting those events is to provide details on the root cause for a target
+// failing; however, consumers of the build-event protocol must not assume
+// that only failed actions are posted.
+type ActionExecuted struct {
+ Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
+ // The mnemonic of the action that was executed
+ Type string `protobuf:"bytes,8,opt,name=type,proto3" json:"type,omitempty"`
+ // The exit code of the action, if it is available.
+ ExitCode int32 `protobuf:"varint,2,opt,name=exit_code,json=exitCode,proto3" json:"exit_code,omitempty"`
+ // Location where to find the standard output of the action
+ // (e.g., a file path).
+ Stdout *File `protobuf:"bytes,3,opt,name=stdout,proto3" json:"stdout,omitempty"`
+ // Location where to find the standard error of the action
+ // (e.g., a file path).
+ Stderr *File `protobuf:"bytes,4,opt,name=stderr,proto3" json:"stderr,omitempty"`
+ // Deprecated. This field is now present on ActionCompletedId.
+ Label string `protobuf:"bytes,5,opt,name=label,proto3" json:"label,omitempty"` // Deprecated: Do not use.
+ // Deprecated. This field is now present on ActionCompletedId.
+ Configuration *BuildEventId_ConfigurationId `protobuf:"bytes,7,opt,name=configuration,proto3" json:"configuration,omitempty"` // Deprecated: Do not use.
+ // Primary output; only provided for successful actions.
+ PrimaryOutput *File `protobuf:"bytes,6,opt,name=primary_output,json=primaryOutput,proto3" json:"primary_output,omitempty"`
+ // The command-line of the action, if the action is a command.
+ CommandLine []string `protobuf:"bytes,9,rep,name=command_line,json=commandLine,proto3" json:"command_line,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *ActionExecuted) Reset() { *m = ActionExecuted{} }
+func (m *ActionExecuted) String() string { return proto.CompactTextString(m) }
+func (*ActionExecuted) ProtoMessage() {}
+func (*ActionExecuted) Descriptor() ([]byte, []int) {
+ return fileDescriptor_817c6a9aafd47c5b, []int{13}
+}
+
+func (m *ActionExecuted) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_ActionExecuted.Unmarshal(m, b)
+}
+func (m *ActionExecuted) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_ActionExecuted.Marshal(b, m, deterministic)
+}
+func (m *ActionExecuted) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_ActionExecuted.Merge(m, src)
+}
+func (m *ActionExecuted) XXX_Size() int {
+ return xxx_messageInfo_ActionExecuted.Size(m)
+}
+func (m *ActionExecuted) XXX_DiscardUnknown() {
+ xxx_messageInfo_ActionExecuted.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ActionExecuted proto.InternalMessageInfo
+
+func (m *ActionExecuted) GetSuccess() bool {
+ if m != nil {
+ return m.Success
+ }
+ return false
+}
+
+func (m *ActionExecuted) GetType() string {
+ if m != nil {
+ return m.Type
+ }
+ return ""
+}
+
+func (m *ActionExecuted) GetExitCode() int32 {
+ if m != nil {
+ return m.ExitCode
+ }
+ return 0
+}
+
+func (m *ActionExecuted) GetStdout() *File {
+ if m != nil {
+ return m.Stdout
+ }
+ return nil
+}
+
+func (m *ActionExecuted) GetStderr() *File {
+ if m != nil {
+ return m.Stderr
+ }
+ return nil
+}
+
+// Deprecated: Do not use.
+func (m *ActionExecuted) GetLabel() string {
+ if m != nil {
+ return m.Label
+ }
+ return ""
+}
+
+// Deprecated: Do not use.
+func (m *ActionExecuted) GetConfiguration() *BuildEventId_ConfigurationId {
+ if m != nil {
+ return m.Configuration
+ }
+ return nil
+}
+
+func (m *ActionExecuted) GetPrimaryOutput() *File {
+ if m != nil {
+ return m.PrimaryOutput
+ }
+ return nil
+}
+
+func (m *ActionExecuted) GetCommandLine() []string {
+ if m != nil {
+ return m.CommandLine
+ }
+ return nil
+}
+
+// Collection of all output files belonging to that output group.
+type OutputGroup struct {
+ // Name of the output group
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+ // List of file sets that belong to this output group as well.
+ FileSets []*BuildEventId_NamedSetOfFilesId `protobuf:"bytes,3,rep,name=file_sets,json=fileSets,proto3" json:"file_sets,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OutputGroup) Reset() { *m = OutputGroup{} }
+func (m *OutputGroup) String() string { return proto.CompactTextString(m) }
+func (*OutputGroup) ProtoMessage() {}
+func (*OutputGroup) Descriptor() ([]byte, []int) {
+ return fileDescriptor_817c6a9aafd47c5b, []int{14}
+}
+
+func (m *OutputGroup) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OutputGroup.Unmarshal(m, b)
+}
+func (m *OutputGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OutputGroup.Marshal(b, m, deterministic)
+}
+func (m *OutputGroup) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OutputGroup.Merge(m, src)
+}
+func (m *OutputGroup) XXX_Size() int {
+ return xxx_messageInfo_OutputGroup.Size(m)
+}
+func (m *OutputGroup) XXX_DiscardUnknown() {
+ xxx_messageInfo_OutputGroup.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OutputGroup proto.InternalMessageInfo
+
+func (m *OutputGroup) GetName() string {
+ if m != nil {
+ return m.Name
+ }
+ return ""
+}
+
+func (m *OutputGroup) GetFileSets() []*BuildEventId_NamedSetOfFilesId {
+ if m != nil {
+ return m.FileSets
+ }
+ return nil
+}
+
+// Payload of the event indicating the completion of a target. The target is
+// specified in the id. If the target failed the root causes are provided as
+// children events.
+type TargetComplete struct {
+ Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
+ // The kind of target (e.g., e.g. "cc_library rule", "source file",
+ // "generated file") where the completion is reported.
+ // Deprecated: use the target_kind field in TargetConfigured instead.
+ TargetKind string `protobuf:"bytes,5,opt,name=target_kind,json=targetKind,proto3" json:"target_kind,omitempty"` // Deprecated: Do not use.
+ // The size of the test, if the target is a test target. Unset otherwise.
+ // Deprecated: use the test_size field in TargetConfigured instead.
+ TestSize TestSize `protobuf:"varint,6,opt,name=test_size,json=testSize,proto3,enum=build_event_stream.TestSize" json:"test_size,omitempty"` // Deprecated: Do not use.
+ // The output files are arranged by their output group. If an output file
+ // is part of multiple output groups, it appears once in each output
+ // group.
+ OutputGroup []*OutputGroup `protobuf:"bytes,2,rep,name=output_group,json=outputGroup,proto3" json:"output_group,omitempty"`
+ // Temporarily, also report the important outputs directly. This is only to
+ // allow existing clients help transition to the deduplicated representation;
+ // new clients should not use it.
+ ImportantOutput []*File `protobuf:"bytes,4,rep,name=important_output,json=importantOutput,proto3" json:"important_output,omitempty"` // Deprecated: Do not use.
+ // List of tags associated with this configured target.
+ Tag []string `protobuf:"bytes,3,rep,name=tag,proto3" json:"tag,omitempty"`
+ // The timeout specified for test actions under this configured target.
+ TestTimeoutSeconds int64 `protobuf:"varint,7,opt,name=test_timeout_seconds,json=testTimeoutSeconds,proto3" json:"test_timeout_seconds,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *TargetComplete) Reset() { *m = TargetComplete{} }
+func (m *TargetComplete) String() string { return proto.CompactTextString(m) }
+func (*TargetComplete) ProtoMessage() {}
+func (*TargetComplete) Descriptor() ([]byte, []int) {
+ return fileDescriptor_817c6a9aafd47c5b, []int{15}
+}
+
+func (m *TargetComplete) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_TargetComplete.Unmarshal(m, b)
+}
+func (m *TargetComplete) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_TargetComplete.Marshal(b, m, deterministic)
+}
+func (m *TargetComplete) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_TargetComplete.Merge(m, src)
+}
+func (m *TargetComplete) XXX_Size() int {
+ return xxx_messageInfo_TargetComplete.Size(m)
+}
+func (m *TargetComplete) XXX_DiscardUnknown() {
+ xxx_messageInfo_TargetComplete.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TargetComplete proto.InternalMessageInfo
+
+func (m *TargetComplete) GetSuccess() bool {
+ if m != nil {
+ return m.Success
+ }
+ return false
+}
+
+// Deprecated: Do not use.
+func (m *TargetComplete) GetTargetKind() string {
+ if m != nil {
+ return m.TargetKind
+ }
+ return ""
+}
+
+// Deprecated: Do not use.
+func (m *TargetComplete) GetTestSize() TestSize {
+ if m != nil {
+ return m.TestSize
+ }
+ return TestSize_UNKNOWN
+}
+
+func (m *TargetComplete) GetOutputGroup() []*OutputGroup {
+ if m != nil {
+ return m.OutputGroup
+ }
+ return nil
+}
+
+// Deprecated: Do not use.
+func (m *TargetComplete) GetImportantOutput() []*File {
+ if m != nil {
+ return m.ImportantOutput
+ }
+ return nil
+}
+
+func (m *TargetComplete) GetTag() []string {
+ if m != nil {
+ return m.Tag
+ }
+ return nil
+}
+
+func (m *TargetComplete) GetTestTimeoutSeconds() int64 {
+ if m != nil {
+ return m.TestTimeoutSeconds
+ }
+ return 0
+}
+
+// Payload on events reporting about individual test action.
+type TestResult struct {
+ // The status of this test.
+ Status TestStatus `protobuf:"varint,5,opt,name=status,proto3,enum=build_event_stream.TestStatus" json:"status,omitempty"`
+ // Additional details about the status of the test. This is intended for
+ // user display and must not be parsed.
+ StatusDetails string `protobuf:"bytes,9,opt,name=status_details,json=statusDetails,proto3" json:"status_details,omitempty"`
+ // True, if the reported attempt is taken from the tool's local cache.
+ CachedLocally bool `protobuf:"varint,4,opt,name=cached_locally,json=cachedLocally,proto3" json:"cached_locally,omitempty"`
+ // Time in milliseconds since the epoch at which the test attempt was started.
+ // Note: for cached test results, this is time can be before the start of the
+ // build.
+ TestAttemptStartMillisEpoch int64 `protobuf:"varint,6,opt,name=test_attempt_start_millis_epoch,json=testAttemptStartMillisEpoch,proto3" json:"test_attempt_start_millis_epoch,omitempty"`
+ // Time the test took to run. For locally cached results, this is the time
+ // the cached invocation took when it was invoked.
+ TestAttemptDurationMillis int64 `protobuf:"varint,3,opt,name=test_attempt_duration_millis,json=testAttemptDurationMillis,proto3" json:"test_attempt_duration_millis,omitempty"`
+ // Files (logs, test.xml, undeclared outputs, etc) generated by that test
+ // action.
+ TestActionOutput []*File `protobuf:"bytes,2,rep,name=test_action_output,json=testActionOutput,proto3" json:"test_action_output,omitempty"`
+ // Warnings generated by that test action.
+ Warning []string `protobuf:"bytes,7,rep,name=warning,proto3" json:"warning,omitempty"`
+ ExecutionInfo *TestResult_ExecutionInfo `protobuf:"bytes,8,opt,name=execution_info,json=executionInfo,proto3" json:"execution_info,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *TestResult) Reset() { *m = TestResult{} }
+func (m *TestResult) String() string { return proto.CompactTextString(m) }
+func (*TestResult) ProtoMessage() {}
+func (*TestResult) Descriptor() ([]byte, []int) {
+ return fileDescriptor_817c6a9aafd47c5b, []int{16}
+}
+
+func (m *TestResult) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_TestResult.Unmarshal(m, b)
+}
+func (m *TestResult) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_TestResult.Marshal(b, m, deterministic)
+}
+func (m *TestResult) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_TestResult.Merge(m, src)
+}
+func (m *TestResult) XXX_Size() int {
+ return xxx_messageInfo_TestResult.Size(m)
+}
+func (m *TestResult) XXX_DiscardUnknown() {
+ xxx_messageInfo_TestResult.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TestResult proto.InternalMessageInfo
+
+func (m *TestResult) GetStatus() TestStatus {
+ if m != nil {
+ return m.Status
+ }
+ return TestStatus_NO_STATUS
+}
+
+func (m *TestResult) GetStatusDetails() string {
+ if m != nil {
+ return m.StatusDetails
+ }
+ return ""
+}
+
+func (m *TestResult) GetCachedLocally() bool {
+ if m != nil {
+ return m.CachedLocally
+ }
+ return false
+}
+
+func (m *TestResult) GetTestAttemptStartMillisEpoch() int64 {
+ if m != nil {
+ return m.TestAttemptStartMillisEpoch
+ }
+ return 0
+}
+
+func (m *TestResult) GetTestAttemptDurationMillis() int64 {
+ if m != nil {
+ return m.TestAttemptDurationMillis
+ }
+ return 0
+}
+
+func (m *TestResult) GetTestActionOutput() []*File {
+ if m != nil {
+ return m.TestActionOutput
+ }
+ return nil
+}
+
+func (m *TestResult) GetWarning() []string {
+ if m != nil {
+ return m.Warning
+ }
+ return nil
+}
+
+func (m *TestResult) GetExecutionInfo() *TestResult_ExecutionInfo {
+ if m != nil {
+ return m.ExecutionInfo
+ }
+ return nil
+}
+
+// Message providing optional meta data on the execution of the test action,
+// if available.
+type TestResult_ExecutionInfo struct {
+ // Deprecated, use TargetComplete.test_timeout_seconds instead.
+ TimeoutSeconds int32 `protobuf:"varint,1,opt,name=timeout_seconds,json=timeoutSeconds,proto3" json:"timeout_seconds,omitempty"` // Deprecated: Do not use.
+ // Name of the strategy to execute this test action (e.g., "local",
+ // "remote")
+ Strategy string `protobuf:"bytes,2,opt,name=strategy,proto3" json:"strategy,omitempty"`
+ // True, if the reported attempt was a cache hit in a remote cache.
+ CachedRemotely bool `protobuf:"varint,6,opt,name=cached_remotely,json=cachedRemotely,proto3" json:"cached_remotely,omitempty"`
+ // The exit code of the test action.
+ ExitCode int32 `protobuf:"varint,7,opt,name=exit_code,json=exitCode,proto3" json:"exit_code,omitempty"`
+ // The hostname of the machine where the test action was executed (in case
+ // of remote execution), if known.
+ Hostname string `protobuf:"bytes,3,opt,name=hostname,proto3" json:"hostname,omitempty"`
+ TimingBreakdown *TestResult_ExecutionInfo_TimingBreakdown `protobuf:"bytes,4,opt,name=timing_breakdown,json=timingBreakdown,proto3" json:"timing_breakdown,omitempty"`
+ ResourceUsage []*TestResult_ExecutionInfo_ResourceUsage `protobuf:"bytes,5,rep,name=resource_usage,json=resourceUsage,proto3" json:"resource_usage,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *TestResult_ExecutionInfo) Reset() { *m = TestResult_ExecutionInfo{} }
+func (m *TestResult_ExecutionInfo) String() string { return proto.CompactTextString(m) }
+func (*TestResult_ExecutionInfo) ProtoMessage() {}
+func (*TestResult_ExecutionInfo) Descriptor() ([]byte, []int) {
+ return fileDescriptor_817c6a9aafd47c5b, []int{16, 0}
+}
+
+func (m *TestResult_ExecutionInfo) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_TestResult_ExecutionInfo.Unmarshal(m, b)
+}
+func (m *TestResult_ExecutionInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_TestResult_ExecutionInfo.Marshal(b, m, deterministic)
+}
+func (m *TestResult_ExecutionInfo) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_TestResult_ExecutionInfo.Merge(m, src)
+}
+func (m *TestResult_ExecutionInfo) XXX_Size() int {
+ return xxx_messageInfo_TestResult_ExecutionInfo.Size(m)
+}
+func (m *TestResult_ExecutionInfo) XXX_DiscardUnknown() {
+ xxx_messageInfo_TestResult_ExecutionInfo.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TestResult_ExecutionInfo proto.InternalMessageInfo
+
+// Deprecated: Do not use.
+func (m *TestResult_ExecutionInfo) GetTimeoutSeconds() int32 {
+ if m != nil {
+ return m.TimeoutSeconds
+ }
+ return 0
+}
+
+func (m *TestResult_ExecutionInfo) GetStrategy() string {
+ if m != nil {
+ return m.Strategy
+ }
+ return ""
+}
+
+func (m *TestResult_ExecutionInfo) GetCachedRemotely() bool {
+ if m != nil {
+ return m.CachedRemotely
+ }
+ return false
+}
+
+func (m *TestResult_ExecutionInfo) GetExitCode() int32 {
+ if m != nil {
+ return m.ExitCode
+ }
+ return 0
+}
+
+func (m *TestResult_ExecutionInfo) GetHostname() string {
+ if m != nil {
+ return m.Hostname
+ }
+ return ""
+}
+
+func (m *TestResult_ExecutionInfo) GetTimingBreakdown() *TestResult_ExecutionInfo_TimingBreakdown {
+ if m != nil {
+ return m.TimingBreakdown
+ }
+ return nil
+}
+
+func (m *TestResult_ExecutionInfo) GetResourceUsage() []*TestResult_ExecutionInfo_ResourceUsage {
+ if m != nil {
+ return m.ResourceUsage
+ }
+ return nil
+}
+
+// Represents a hierarchical timing breakdown of an activity.
+// The top level time should be the total time of the activity.
+// Invariant: time_millis >= sum of time_millis of all direct children.
+type TestResult_ExecutionInfo_TimingBreakdown struct {
+ Child []*TestResult_ExecutionInfo_TimingBreakdown `protobuf:"bytes,1,rep,name=child,proto3" json:"child,omitempty"`
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+ TimeMillis int64 `protobuf:"varint,3,opt,name=time_millis,json=timeMillis,proto3" json:"time_millis,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *TestResult_ExecutionInfo_TimingBreakdown) Reset() {
+ *m = TestResult_ExecutionInfo_TimingBreakdown{}
+}
+func (m *TestResult_ExecutionInfo_TimingBreakdown) String() string { return proto.CompactTextString(m) }
+func (*TestResult_ExecutionInfo_TimingBreakdown) ProtoMessage() {}
+func (*TestResult_ExecutionInfo_TimingBreakdown) Descriptor() ([]byte, []int) {
+ return fileDescriptor_817c6a9aafd47c5b, []int{16, 0, 0}
+}
+
+func (m *TestResult_ExecutionInfo_TimingBreakdown) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_TestResult_ExecutionInfo_TimingBreakdown.Unmarshal(m, b)
+}
+func (m *TestResult_ExecutionInfo_TimingBreakdown) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_TestResult_ExecutionInfo_TimingBreakdown.Marshal(b, m, deterministic)
+}
+func (m *TestResult_ExecutionInfo_TimingBreakdown) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_TestResult_ExecutionInfo_TimingBreakdown.Merge(m, src)
+}
+func (m *TestResult_ExecutionInfo_TimingBreakdown) XXX_Size() int {
+ return xxx_messageInfo_TestResult_ExecutionInfo_TimingBreakdown.Size(m)
+}
+func (m *TestResult_ExecutionInfo_TimingBreakdown) XXX_DiscardUnknown() {
+ xxx_messageInfo_TestResult_ExecutionInfo_TimingBreakdown.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TestResult_ExecutionInfo_TimingBreakdown proto.InternalMessageInfo
+
+func (m *TestResult_ExecutionInfo_TimingBreakdown) GetChild() []*TestResult_ExecutionInfo_TimingBreakdown {
+ if m != nil {
+ return m.Child
+ }
+ return nil
+}
+
+func (m *TestResult_ExecutionInfo_TimingBreakdown) GetName() string {
+ if m != nil {
+ return m.Name
+ }
+ return ""
+}
+
+func (m *TestResult_ExecutionInfo_TimingBreakdown) GetTimeMillis() int64 {
+ if m != nil {
+ return m.TimeMillis
+ }
+ return 0
+}
+
+type TestResult_ExecutionInfo_ResourceUsage struct {
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+ Value int64 `protobuf:"varint,2,opt,name=value,proto3" json:"value,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *TestResult_ExecutionInfo_ResourceUsage) Reset() {
+ *m = TestResult_ExecutionInfo_ResourceUsage{}
+}
+func (m *TestResult_ExecutionInfo_ResourceUsage) String() string { return proto.CompactTextString(m) }
+func (*TestResult_ExecutionInfo_ResourceUsage) ProtoMessage() {}
+func (*TestResult_ExecutionInfo_ResourceUsage) Descriptor() ([]byte, []int) {
+ return fileDescriptor_817c6a9aafd47c5b, []int{16, 0, 1}
+}
+
+func (m *TestResult_ExecutionInfo_ResourceUsage) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_TestResult_ExecutionInfo_ResourceUsage.Unmarshal(m, b)
+}
+func (m *TestResult_ExecutionInfo_ResourceUsage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_TestResult_ExecutionInfo_ResourceUsage.Marshal(b, m, deterministic)
+}
+func (m *TestResult_ExecutionInfo_ResourceUsage) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_TestResult_ExecutionInfo_ResourceUsage.Merge(m, src)
+}
+func (m *TestResult_ExecutionInfo_ResourceUsage) XXX_Size() int {
+ return xxx_messageInfo_TestResult_ExecutionInfo_ResourceUsage.Size(m)
+}
+func (m *TestResult_ExecutionInfo_ResourceUsage) XXX_DiscardUnknown() {
+ xxx_messageInfo_TestResult_ExecutionInfo_ResourceUsage.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TestResult_ExecutionInfo_ResourceUsage proto.InternalMessageInfo
+
+func (m *TestResult_ExecutionInfo_ResourceUsage) GetName() string {
+ if m != nil {
+ return m.Name
+ }
+ return ""
+}
+
+func (m *TestResult_ExecutionInfo_ResourceUsage) GetValue() int64 {
+ if m != nil {
+ return m.Value
+ }
+ return 0
+}
+
+// Payload of the event summarizing a test.
+// TODO(aehlig): extend event with additional information as soon as we known
+// which additional information we need for test summaries.
+type TestSummary struct {
+ // Wrapper around BlazeTestStatus to support importing that enum to proto3.
+ // Overall status of test, accumulated over all runs, shards, and attempts.
+ OverallStatus TestStatus `protobuf:"varint,5,opt,name=overall_status,json=overallStatus,proto3,enum=build_event_stream.TestStatus" json:"overall_status,omitempty"`
+ // Total number of runs
+ TotalRunCount int32 `protobuf:"varint,1,opt,name=total_run_count,json=totalRunCount,proto3" json:"total_run_count,omitempty"`
+ // Path to logs of passed runs.
+ Passed []*File `protobuf:"bytes,3,rep,name=passed,proto3" json:"passed,omitempty"`
+ // Path to logs of failed runs;
+ Failed []*File `protobuf:"bytes,4,rep,name=failed,proto3" json:"failed,omitempty"`
+ // Total number of cached test actions
+ TotalNumCached int32 `protobuf:"varint,6,opt,name=total_num_cached,json=totalNumCached,proto3" json:"total_num_cached,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *TestSummary) Reset() { *m = TestSummary{} }
+func (m *TestSummary) String() string { return proto.CompactTextString(m) }
+func (*TestSummary) ProtoMessage() {}
+func (*TestSummary) Descriptor() ([]byte, []int) {
+ return fileDescriptor_817c6a9aafd47c5b, []int{17}
+}
+
+func (m *TestSummary) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_TestSummary.Unmarshal(m, b)
+}
+func (m *TestSummary) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_TestSummary.Marshal(b, m, deterministic)
+}
+func (m *TestSummary) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_TestSummary.Merge(m, src)
+}
+func (m *TestSummary) XXX_Size() int {
+ return xxx_messageInfo_TestSummary.Size(m)
+}
+func (m *TestSummary) XXX_DiscardUnknown() {
+ xxx_messageInfo_TestSummary.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TestSummary proto.InternalMessageInfo
+
+func (m *TestSummary) GetOverallStatus() TestStatus {
+ if m != nil {
+ return m.OverallStatus
+ }
+ return TestStatus_NO_STATUS
+}
+
+func (m *TestSummary) GetTotalRunCount() int32 {
+ if m != nil {
+ return m.TotalRunCount
+ }
+ return 0
+}
+
+func (m *TestSummary) GetPassed() []*File {
+ if m != nil {
+ return m.Passed
+ }
+ return nil
+}
+
+func (m *TestSummary) GetFailed() []*File {
+ if m != nil {
+ return m.Failed
+ }
+ return nil
+}
+
+func (m *TestSummary) GetTotalNumCached() int32 {
+ if m != nil {
+ return m.TotalNumCached
+ }
+ return 0
+}
+
+// Event indicating the end of a build.
+type BuildFinished struct {
+ // If the build succeeded or failed.
+ OverallSuccess bool `protobuf:"varint,1,opt,name=overall_success,json=overallSuccess,proto3" json:"overall_success,omitempty"` // Deprecated: Do not use.
+ // The overall status of the build. A build was successful iff
+ // ExitCode.code equals 0.
+ ExitCode *BuildFinished_ExitCode `protobuf:"bytes,3,opt,name=exit_code,json=exitCode,proto3" json:"exit_code,omitempty"`
+ // Time in milliseconds since the epoch.
+ // TODO(buchgr): Use google.protobuf.Timestamp once bazel's protoc supports
+ // it.
+ FinishTimeMillis int64 `protobuf:"varint,2,opt,name=finish_time_millis,json=finishTimeMillis,proto3" json:"finish_time_millis,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *BuildFinished) Reset() { *m = BuildFinished{} }
+func (m *BuildFinished) String() string { return proto.CompactTextString(m) }
+func (*BuildFinished) ProtoMessage() {}
+func (*BuildFinished) Descriptor() ([]byte, []int) {
+ return fileDescriptor_817c6a9aafd47c5b, []int{18}
+}
+
+func (m *BuildFinished) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_BuildFinished.Unmarshal(m, b)
+}
+func (m *BuildFinished) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_BuildFinished.Marshal(b, m, deterministic)
+}
+func (m *BuildFinished) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_BuildFinished.Merge(m, src)
+}
+func (m *BuildFinished) XXX_Size() int {
+ return xxx_messageInfo_BuildFinished.Size(m)
+}
+func (m *BuildFinished) XXX_DiscardUnknown() {
+ xxx_messageInfo_BuildFinished.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BuildFinished proto.InternalMessageInfo
+
+// Deprecated: Do not use.
+func (m *BuildFinished) GetOverallSuccess() bool {
+ if m != nil {
+ return m.OverallSuccess
+ }
+ return false
+}
+
+func (m *BuildFinished) GetExitCode() *BuildFinished_ExitCode {
+ if m != nil {
+ return m.ExitCode
+ }
+ return nil
+}
+
+func (m *BuildFinished) GetFinishTimeMillis() int64 {
+ if m != nil {
+ return m.FinishTimeMillis
+ }
+ return 0
+}
+
+// Exit code of a build. The possible values correspond to the predefined
+// codes in bazel's lib.ExitCode class, as well as any custom exit code a
+// module might define. The predefined exit codes are subject to change (but
+// rarely do) and are not part of the public API.
+//
+// A build was successful iff ExitCode.code equals 0.
+type BuildFinished_ExitCode struct {
+ // The name of the exit code.
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+ // The exit code.
+ Code int32 `protobuf:"varint,2,opt,name=code,proto3" json:"code,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *BuildFinished_ExitCode) Reset() { *m = BuildFinished_ExitCode{} }
+func (m *BuildFinished_ExitCode) String() string { return proto.CompactTextString(m) }
+func (*BuildFinished_ExitCode) ProtoMessage() {}
+func (*BuildFinished_ExitCode) Descriptor() ([]byte, []int) {
+ return fileDescriptor_817c6a9aafd47c5b, []int{18, 0}
+}
+
+func (m *BuildFinished_ExitCode) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_BuildFinished_ExitCode.Unmarshal(m, b)
+}
+func (m *BuildFinished_ExitCode) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_BuildFinished_ExitCode.Marshal(b, m, deterministic)
+}
+func (m *BuildFinished_ExitCode) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_BuildFinished_ExitCode.Merge(m, src)
+}
+func (m *BuildFinished_ExitCode) XXX_Size() int {
+ return xxx_messageInfo_BuildFinished_ExitCode.Size(m)
+}
+func (m *BuildFinished_ExitCode) XXX_DiscardUnknown() {
+ xxx_messageInfo_BuildFinished_ExitCode.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BuildFinished_ExitCode proto.InternalMessageInfo
+
+func (m *BuildFinished_ExitCode) GetName() string {
+ if m != nil {
+ return m.Name
+ }
+ return ""
+}
+
+func (m *BuildFinished_ExitCode) GetCode() int32 {
+ if m != nil {
+ return m.Code
+ }
+ return 0
+}
+
+type BuildMetrics struct {
+ ActionSummary *BuildMetrics_ActionSummary `protobuf:"bytes,1,opt,name=action_summary,json=actionSummary,proto3" json:"action_summary,omitempty"`
+ MemoryMetrics *BuildMetrics_MemoryMetrics `protobuf:"bytes,2,opt,name=memory_metrics,json=memoryMetrics,proto3" json:"memory_metrics,omitempty"`
+ TargetMetrics *BuildMetrics_TargetMetrics `protobuf:"bytes,3,opt,name=target_metrics,json=targetMetrics,proto3" json:"target_metrics,omitempty"`
+ PackageMetrics *BuildMetrics_PackageMetrics `protobuf:"bytes,4,opt,name=package_metrics,json=packageMetrics,proto3" json:"package_metrics,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *BuildMetrics) Reset() { *m = BuildMetrics{} }
+func (m *BuildMetrics) String() string { return proto.CompactTextString(m) }
+func (*BuildMetrics) ProtoMessage() {}
+func (*BuildMetrics) Descriptor() ([]byte, []int) {
+ return fileDescriptor_817c6a9aafd47c5b, []int{19}
+}
+
+func (m *BuildMetrics) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_BuildMetrics.Unmarshal(m, b)
+}
+func (m *BuildMetrics) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_BuildMetrics.Marshal(b, m, deterministic)
+}
+func (m *BuildMetrics) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_BuildMetrics.Merge(m, src)
+}
+func (m *BuildMetrics) XXX_Size() int {
+ return xxx_messageInfo_BuildMetrics.Size(m)
+}
+func (m *BuildMetrics) XXX_DiscardUnknown() {
+ xxx_messageInfo_BuildMetrics.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BuildMetrics proto.InternalMessageInfo
+
+func (m *BuildMetrics) GetActionSummary() *BuildMetrics_ActionSummary {
+ if m != nil {
+ return m.ActionSummary
+ }
+ return nil
+}
+
+func (m *BuildMetrics) GetMemoryMetrics() *BuildMetrics_MemoryMetrics {
+ if m != nil {
+ return m.MemoryMetrics
+ }
+ return nil
+}
+
+func (m *BuildMetrics) GetTargetMetrics() *BuildMetrics_TargetMetrics {
+ if m != nil {
+ return m.TargetMetrics
+ }
+ return nil
+}
+
+func (m *BuildMetrics) GetPackageMetrics() *BuildMetrics_PackageMetrics {
+ if m != nil {
+ return m.PackageMetrics
+ }
+ return nil
+}
+
+type BuildMetrics_ActionSummary struct {
+ // The total number of actions created and registered during the build.
+ // This includes unused actions that were constructed but
+ // not executed during this build.
+ ActionsCreated int64 `protobuf:"varint,1,opt,name=actions_created,json=actionsCreated,proto3" json:"actions_created,omitempty"`
+ // The total number of actions executed during the build.
+ // This includes any remote cache hits, but excludes
+ // local action cache hits.
+ ActionsExecuted int64 `protobuf:"varint,2,opt,name=actions_executed,json=actionsExecuted,proto3" json:"actions_executed,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *BuildMetrics_ActionSummary) Reset() { *m = BuildMetrics_ActionSummary{} }
+func (m *BuildMetrics_ActionSummary) String() string { return proto.CompactTextString(m) }
+func (*BuildMetrics_ActionSummary) ProtoMessage() {}
+func (*BuildMetrics_ActionSummary) Descriptor() ([]byte, []int) {
+ return fileDescriptor_817c6a9aafd47c5b, []int{19, 0}
+}
+
+func (m *BuildMetrics_ActionSummary) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_BuildMetrics_ActionSummary.Unmarshal(m, b)
+}
+func (m *BuildMetrics_ActionSummary) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_BuildMetrics_ActionSummary.Marshal(b, m, deterministic)
+}
+func (m *BuildMetrics_ActionSummary) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_BuildMetrics_ActionSummary.Merge(m, src)
+}
+func (m *BuildMetrics_ActionSummary) XXX_Size() int {
+ return xxx_messageInfo_BuildMetrics_ActionSummary.Size(m)
+}
+func (m *BuildMetrics_ActionSummary) XXX_DiscardUnknown() {
+ xxx_messageInfo_BuildMetrics_ActionSummary.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BuildMetrics_ActionSummary proto.InternalMessageInfo
+
+func (m *BuildMetrics_ActionSummary) GetActionsCreated() int64 {
+ if m != nil {
+ return m.ActionsCreated
+ }
+ return 0
+}
+
+func (m *BuildMetrics_ActionSummary) GetActionsExecuted() int64 {
+ if m != nil {
+ return m.ActionsExecuted
+ }
+ return 0
+}
+
+type BuildMetrics_MemoryMetrics struct {
+ // Size of the JVM heap post build in bytes. This is only collected if
+ // --bep_publish_used_heap_size_post_build is set,
+ // since it forces a full GC.
+ UsedHeapSizePostBuild int64 `protobuf:"varint,1,opt,name=used_heap_size_post_build,json=usedHeapSizePostBuild,proto3" json:"used_heap_size_post_build,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *BuildMetrics_MemoryMetrics) Reset() { *m = BuildMetrics_MemoryMetrics{} }
+func (m *BuildMetrics_MemoryMetrics) String() string { return proto.CompactTextString(m) }
+func (*BuildMetrics_MemoryMetrics) ProtoMessage() {}
+func (*BuildMetrics_MemoryMetrics) Descriptor() ([]byte, []int) {
+ return fileDescriptor_817c6a9aafd47c5b, []int{19, 1}
+}
+
+func (m *BuildMetrics_MemoryMetrics) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_BuildMetrics_MemoryMetrics.Unmarshal(m, b)
+}
+func (m *BuildMetrics_MemoryMetrics) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_BuildMetrics_MemoryMetrics.Marshal(b, m, deterministic)
+}
+func (m *BuildMetrics_MemoryMetrics) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_BuildMetrics_MemoryMetrics.Merge(m, src)
+}
+func (m *BuildMetrics_MemoryMetrics) XXX_Size() int {
+ return xxx_messageInfo_BuildMetrics_MemoryMetrics.Size(m)
+}
+func (m *BuildMetrics_MemoryMetrics) XXX_DiscardUnknown() {
+ xxx_messageInfo_BuildMetrics_MemoryMetrics.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BuildMetrics_MemoryMetrics proto.InternalMessageInfo
+
+func (m *BuildMetrics_MemoryMetrics) GetUsedHeapSizePostBuild() int64 {
+ if m != nil {
+ return m.UsedHeapSizePostBuild
+ }
+ return 0
+}
+
+type BuildMetrics_TargetMetrics struct {
+ // Number of targets loaded during this build.
+ TargetsLoaded int64 `protobuf:"varint,1,opt,name=targets_loaded,json=targetsLoaded,proto3" json:"targets_loaded,omitempty"`
+ // Number of targets configured during this build. This can
+ // be greater than targets_loaded if the same target is configured
+ // multiple times.
+ TargetsConfigured int64 `protobuf:"varint,2,opt,name=targets_configured,json=targetsConfigured,proto3" json:"targets_configured,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *BuildMetrics_TargetMetrics) Reset() { *m = BuildMetrics_TargetMetrics{} }
+func (m *BuildMetrics_TargetMetrics) String() string { return proto.CompactTextString(m) }
+func (*BuildMetrics_TargetMetrics) ProtoMessage() {}
+func (*BuildMetrics_TargetMetrics) Descriptor() ([]byte, []int) {
+ return fileDescriptor_817c6a9aafd47c5b, []int{19, 2}
+}
+
+func (m *BuildMetrics_TargetMetrics) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_BuildMetrics_TargetMetrics.Unmarshal(m, b)
+}
+func (m *BuildMetrics_TargetMetrics) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_BuildMetrics_TargetMetrics.Marshal(b, m, deterministic)
+}
+func (m *BuildMetrics_TargetMetrics) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_BuildMetrics_TargetMetrics.Merge(m, src)
+}
+func (m *BuildMetrics_TargetMetrics) XXX_Size() int {
+ return xxx_messageInfo_BuildMetrics_TargetMetrics.Size(m)
+}
+func (m *BuildMetrics_TargetMetrics) XXX_DiscardUnknown() {
+ xxx_messageInfo_BuildMetrics_TargetMetrics.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BuildMetrics_TargetMetrics proto.InternalMessageInfo
+
+func (m *BuildMetrics_TargetMetrics) GetTargetsLoaded() int64 {
+ if m != nil {
+ return m.TargetsLoaded
+ }
+ return 0
+}
+
+func (m *BuildMetrics_TargetMetrics) GetTargetsConfigured() int64 {
+ if m != nil {
+ return m.TargetsConfigured
+ }
+ return 0
+}
+
+type BuildMetrics_PackageMetrics struct {
+ // Number of BUILD files (aka packages) loaded during this build.
+ PackagesLoaded int64 `protobuf:"varint,1,opt,name=packages_loaded,json=packagesLoaded,proto3" json:"packages_loaded,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *BuildMetrics_PackageMetrics) Reset() { *m = BuildMetrics_PackageMetrics{} }
+func (m *BuildMetrics_PackageMetrics) String() string { return proto.CompactTextString(m) }
+func (*BuildMetrics_PackageMetrics) ProtoMessage() {}
+func (*BuildMetrics_PackageMetrics) Descriptor() ([]byte, []int) {
+ return fileDescriptor_817c6a9aafd47c5b, []int{19, 3}
+}
+
+func (m *BuildMetrics_PackageMetrics) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_BuildMetrics_PackageMetrics.Unmarshal(m, b)
+}
+func (m *BuildMetrics_PackageMetrics) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_BuildMetrics_PackageMetrics.Marshal(b, m, deterministic)
+}
+func (m *BuildMetrics_PackageMetrics) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_BuildMetrics_PackageMetrics.Merge(m, src)
+}
+func (m *BuildMetrics_PackageMetrics) XXX_Size() int {
+ return xxx_messageInfo_BuildMetrics_PackageMetrics.Size(m)
+}
+func (m *BuildMetrics_PackageMetrics) XXX_DiscardUnknown() {
+ xxx_messageInfo_BuildMetrics_PackageMetrics.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BuildMetrics_PackageMetrics proto.InternalMessageInfo
+
+func (m *BuildMetrics_PackageMetrics) GetPackagesLoaded() int64 {
+ if m != nil {
+ return m.PackagesLoaded
+ }
+ return 0
+}
+
+// Event providing additional statistics/logs after completion of the build.
+type BuildToolLogs struct {
+ Log []*File `protobuf:"bytes,1,rep,name=log,proto3" json:"log,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *BuildToolLogs) Reset() { *m = BuildToolLogs{} }
+func (m *BuildToolLogs) String() string { return proto.CompactTextString(m) }
+func (*BuildToolLogs) ProtoMessage() {}
+func (*BuildToolLogs) Descriptor() ([]byte, []int) {
+ return fileDescriptor_817c6a9aafd47c5b, []int{20}
+}
+
+func (m *BuildToolLogs) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_BuildToolLogs.Unmarshal(m, b)
+}
+func (m *BuildToolLogs) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_BuildToolLogs.Marshal(b, m, deterministic)
+}
+func (m *BuildToolLogs) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_BuildToolLogs.Merge(m, src)
+}
+func (m *BuildToolLogs) XXX_Size() int {
+ return xxx_messageInfo_BuildToolLogs.Size(m)
+}
+func (m *BuildToolLogs) XXX_DiscardUnknown() {
+ xxx_messageInfo_BuildToolLogs.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BuildToolLogs proto.InternalMessageInfo
+
+func (m *BuildToolLogs) GetLog() []*File {
+ if m != nil {
+ return m.Log
+ }
+ return nil
+}
+
+// Message describing a build event. Events will have an identifier that
+// is unique within a given build invocation; they also announce follow-up
+// events as children. More details, which are specific to the kind of event
+// that is observed, is provided in the payload. More options for the payload
+// might be added in the future.
+type BuildEvent struct {
+ Id *BuildEventId `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ Children []*BuildEventId `protobuf:"bytes,2,rep,name=children,proto3" json:"children,omitempty"`
+ LastMessage bool `protobuf:"varint,20,opt,name=last_message,json=lastMessage,proto3" json:"last_message,omitempty"`
+ // Types that are valid to be assigned to Payload:
+ // *BuildEvent_Progress
+ // *BuildEvent_Aborted
+ // *BuildEvent_Started
+ // *BuildEvent_UnstructuredCommandLine
+ // *BuildEvent_StructuredCommandLine
+ // *BuildEvent_OptionsParsed
+ // *BuildEvent_WorkspaceStatus
+ // *BuildEvent_Fetch
+ // *BuildEvent_Configuration
+ // *BuildEvent_Expanded
+ // *BuildEvent_Configured
+ // *BuildEvent_Action
+ // *BuildEvent_NamedSetOfFiles
+ // *BuildEvent_Completed
+ // *BuildEvent_TestResult
+ // *BuildEvent_TestSummary
+ // *BuildEvent_Finished
+ // *BuildEvent_BuildToolLogs
+ // *BuildEvent_BuildMetrics
+ Payload isBuildEvent_Payload `protobuf_oneof:"payload"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *BuildEvent) Reset() { *m = BuildEvent{} }
+func (m *BuildEvent) String() string { return proto.CompactTextString(m) }
+func (*BuildEvent) ProtoMessage() {}
+func (*BuildEvent) Descriptor() ([]byte, []int) {
+ return fileDescriptor_817c6a9aafd47c5b, []int{21}
+}
+
+func (m *BuildEvent) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_BuildEvent.Unmarshal(m, b)
+}
+func (m *BuildEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_BuildEvent.Marshal(b, m, deterministic)
+}
+func (m *BuildEvent) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_BuildEvent.Merge(m, src)
+}
+func (m *BuildEvent) XXX_Size() int {
+ return xxx_messageInfo_BuildEvent.Size(m)
+}
+func (m *BuildEvent) XXX_DiscardUnknown() {
+ xxx_messageInfo_BuildEvent.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BuildEvent proto.InternalMessageInfo
+
+func (m *BuildEvent) GetId() *BuildEventId {
+ if m != nil {
+ return m.Id
+ }
+ return nil
+}
+
+func (m *BuildEvent) GetChildren() []*BuildEventId {
+ if m != nil {
+ return m.Children
+ }
+ return nil
+}
+
+func (m *BuildEvent) GetLastMessage() bool {
+ if m != nil {
+ return m.LastMessage
+ }
+ return false
+}
+
+type isBuildEvent_Payload interface {
+ isBuildEvent_Payload()
+}
+
+type BuildEvent_Progress struct {
+ Progress *Progress `protobuf:"bytes,3,opt,name=progress,proto3,oneof"`
+}
+
+type BuildEvent_Aborted struct {
+ Aborted *Aborted `protobuf:"bytes,4,opt,name=aborted,proto3,oneof"`
+}
+
+type BuildEvent_Started struct {
+ Started *BuildStarted `protobuf:"bytes,5,opt,name=started,proto3,oneof"`
+}
+
+type BuildEvent_UnstructuredCommandLine struct {
+ UnstructuredCommandLine *UnstructuredCommandLine `protobuf:"bytes,12,opt,name=unstructured_command_line,json=unstructuredCommandLine,proto3,oneof"`
+}
+
+type BuildEvent_StructuredCommandLine struct {
+ StructuredCommandLine *command_line.CommandLine `protobuf:"bytes,22,opt,name=structured_command_line,json=structuredCommandLine,proto3,oneof"`
+}
+
+type BuildEvent_OptionsParsed struct {
+ OptionsParsed *OptionsParsed `protobuf:"bytes,13,opt,name=options_parsed,json=optionsParsed,proto3,oneof"`
+}
+
+type BuildEvent_WorkspaceStatus struct {
+ WorkspaceStatus *WorkspaceStatus `protobuf:"bytes,16,opt,name=workspace_status,json=workspaceStatus,proto3,oneof"`
+}
+
+type BuildEvent_Fetch struct {
+ Fetch *Fetch `protobuf:"bytes,21,opt,name=fetch,proto3,oneof"`
+}
+
+type BuildEvent_Configuration struct {
+ Configuration *Configuration `protobuf:"bytes,17,opt,name=configuration,proto3,oneof"`
+}
+
+type BuildEvent_Expanded struct {
+ Expanded *PatternExpanded `protobuf:"bytes,6,opt,name=expanded,proto3,oneof"`
+}
+
+type BuildEvent_Configured struct {
+ Configured *TargetConfigured `protobuf:"bytes,18,opt,name=configured,proto3,oneof"`
+}
+
+type BuildEvent_Action struct {
+ Action *ActionExecuted `protobuf:"bytes,7,opt,name=action,proto3,oneof"`
+}
+
+type BuildEvent_NamedSetOfFiles struct {
+ NamedSetOfFiles *NamedSetOfFiles `protobuf:"bytes,15,opt,name=named_set_of_files,json=namedSetOfFiles,proto3,oneof"`
+}
+
+type BuildEvent_Completed struct {
+ Completed *TargetComplete `protobuf:"bytes,8,opt,name=completed,proto3,oneof"`
+}
+
+type BuildEvent_TestResult struct {
+ TestResult *TestResult `protobuf:"bytes,10,opt,name=test_result,json=testResult,proto3,oneof"`
+}
+
+type BuildEvent_TestSummary struct {
+ TestSummary *TestSummary `protobuf:"bytes,9,opt,name=test_summary,json=testSummary,proto3,oneof"`
+}
+
+type BuildEvent_Finished struct {
+ Finished *BuildFinished `protobuf:"bytes,14,opt,name=finished,proto3,oneof"`
+}
+
+type BuildEvent_BuildToolLogs struct {
+ BuildToolLogs *BuildToolLogs `protobuf:"bytes,23,opt,name=build_tool_logs,json=buildToolLogs,proto3,oneof"`
+}
+
+type BuildEvent_BuildMetrics struct {
+ BuildMetrics *BuildMetrics `protobuf:"bytes,24,opt,name=build_metrics,json=buildMetrics,proto3,oneof"`
+}
+
+func (*BuildEvent_Progress) isBuildEvent_Payload() {}
+
+func (*BuildEvent_Aborted) isBuildEvent_Payload() {}
+
+func (*BuildEvent_Started) isBuildEvent_Payload() {}
+
+func (*BuildEvent_UnstructuredCommandLine) isBuildEvent_Payload() {}
+
+func (*BuildEvent_StructuredCommandLine) isBuildEvent_Payload() {}
+
+func (*BuildEvent_OptionsParsed) isBuildEvent_Payload() {}
+
+func (*BuildEvent_WorkspaceStatus) isBuildEvent_Payload() {}
+
+func (*BuildEvent_Fetch) isBuildEvent_Payload() {}
+
+func (*BuildEvent_Configuration) isBuildEvent_Payload() {}
+
+func (*BuildEvent_Expanded) isBuildEvent_Payload() {}
+
+func (*BuildEvent_Configured) isBuildEvent_Payload() {}
+
+func (*BuildEvent_Action) isBuildEvent_Payload() {}
+
+func (*BuildEvent_NamedSetOfFiles) isBuildEvent_Payload() {}
+
+func (*BuildEvent_Completed) isBuildEvent_Payload() {}
+
+func (*BuildEvent_TestResult) isBuildEvent_Payload() {}
+
+func (*BuildEvent_TestSummary) isBuildEvent_Payload() {}
+
+func (*BuildEvent_Finished) isBuildEvent_Payload() {}
+
+func (*BuildEvent_BuildToolLogs) isBuildEvent_Payload() {}
+
+func (*BuildEvent_BuildMetrics) isBuildEvent_Payload() {}
+
+func (m *BuildEvent) GetPayload() isBuildEvent_Payload {
+ if m != nil {
+ return m.Payload
+ }
+ return nil
+}
+
+func (m *BuildEvent) GetProgress() *Progress {
+ if x, ok := m.GetPayload().(*BuildEvent_Progress); ok {
+ return x.Progress
+ }
+ return nil
+}
+
+func (m *BuildEvent) GetAborted() *Aborted {
+ if x, ok := m.GetPayload().(*BuildEvent_Aborted); ok {
+ return x.Aborted
+ }
+ return nil
+}
+
+func (m *BuildEvent) GetStarted() *BuildStarted {
+ if x, ok := m.GetPayload().(*BuildEvent_Started); ok {
+ return x.Started
+ }
+ return nil
+}
+
+func (m *BuildEvent) GetUnstructuredCommandLine() *UnstructuredCommandLine {
+ if x, ok := m.GetPayload().(*BuildEvent_UnstructuredCommandLine); ok {
+ return x.UnstructuredCommandLine
+ }
+ return nil
+}
+
+func (m *BuildEvent) GetStructuredCommandLine() *command_line.CommandLine {
+ if x, ok := m.GetPayload().(*BuildEvent_StructuredCommandLine); ok {
+ return x.StructuredCommandLine
+ }
+ return nil
+}
+
+func (m *BuildEvent) GetOptionsParsed() *OptionsParsed {
+ if x, ok := m.GetPayload().(*BuildEvent_OptionsParsed); ok {
+ return x.OptionsParsed
+ }
+ return nil
+}
+
+func (m *BuildEvent) GetWorkspaceStatus() *WorkspaceStatus {
+ if x, ok := m.GetPayload().(*BuildEvent_WorkspaceStatus); ok {
+ return x.WorkspaceStatus
+ }
+ return nil
+}
+
+func (m *BuildEvent) GetFetch() *Fetch {
+ if x, ok := m.GetPayload().(*BuildEvent_Fetch); ok {
+ return x.Fetch
+ }
+ return nil
+}
+
+func (m *BuildEvent) GetConfiguration() *Configuration {
+ if x, ok := m.GetPayload().(*BuildEvent_Configuration); ok {
+ return x.Configuration
+ }
+ return nil
+}
+
+func (m *BuildEvent) GetExpanded() *PatternExpanded {
+ if x, ok := m.GetPayload().(*BuildEvent_Expanded); ok {
+ return x.Expanded
+ }
+ return nil
+}
+
+func (m *BuildEvent) GetConfigured() *TargetConfigured {
+ if x, ok := m.GetPayload().(*BuildEvent_Configured); ok {
+ return x.Configured
+ }
+ return nil
+}
+
+func (m *BuildEvent) GetAction() *ActionExecuted {
+ if x, ok := m.GetPayload().(*BuildEvent_Action); ok {
+ return x.Action
+ }
+ return nil
+}
+
+func (m *BuildEvent) GetNamedSetOfFiles() *NamedSetOfFiles {
+ if x, ok := m.GetPayload().(*BuildEvent_NamedSetOfFiles); ok {
+ return x.NamedSetOfFiles
+ }
+ return nil
+}
+
+func (m *BuildEvent) GetCompleted() *TargetComplete {
+ if x, ok := m.GetPayload().(*BuildEvent_Completed); ok {
+ return x.Completed
+ }
+ return nil
+}
+
+func (m *BuildEvent) GetTestResult() *TestResult {
+ if x, ok := m.GetPayload().(*BuildEvent_TestResult); ok {
+ return x.TestResult
+ }
+ return nil
+}
+
+func (m *BuildEvent) GetTestSummary() *TestSummary {
+ if x, ok := m.GetPayload().(*BuildEvent_TestSummary); ok {
+ return x.TestSummary
+ }
+ return nil
+}
+
+func (m *BuildEvent) GetFinished() *BuildFinished {
+ if x, ok := m.GetPayload().(*BuildEvent_Finished); ok {
+ return x.Finished
+ }
+ return nil
+}
+
+func (m *BuildEvent) GetBuildToolLogs() *BuildToolLogs {
+ if x, ok := m.GetPayload().(*BuildEvent_BuildToolLogs); ok {
+ return x.BuildToolLogs
+ }
+ return nil
+}
+
+func (m *BuildEvent) GetBuildMetrics() *BuildMetrics {
+ if x, ok := m.GetPayload().(*BuildEvent_BuildMetrics); ok {
+ return x.BuildMetrics
+ }
+ return nil
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*BuildEvent) XXX_OneofWrappers() []interface{} {
+ return []interface{}{
+ (*BuildEvent_Progress)(nil),
+ (*BuildEvent_Aborted)(nil),
+ (*BuildEvent_Started)(nil),
+ (*BuildEvent_UnstructuredCommandLine)(nil),
+ (*BuildEvent_StructuredCommandLine)(nil),
+ (*BuildEvent_OptionsParsed)(nil),
+ (*BuildEvent_WorkspaceStatus)(nil),
+ (*BuildEvent_Fetch)(nil),
+ (*BuildEvent_Configuration)(nil),
+ (*BuildEvent_Expanded)(nil),
+ (*BuildEvent_Configured)(nil),
+ (*BuildEvent_Action)(nil),
+ (*BuildEvent_NamedSetOfFiles)(nil),
+ (*BuildEvent_Completed)(nil),
+ (*BuildEvent_TestResult)(nil),
+ (*BuildEvent_TestSummary)(nil),
+ (*BuildEvent_Finished)(nil),
+ (*BuildEvent_BuildToolLogs)(nil),
+ (*BuildEvent_BuildMetrics)(nil),
+ }
+}
+
+func init() {
+ proto.RegisterEnum("build_event_stream.TestSize", TestSize_name, TestSize_value)
+ proto.RegisterEnum("build_event_stream.TestStatus", TestStatus_name, TestStatus_value)
+ proto.RegisterEnum("build_event_stream.Aborted_AbortReason", Aborted_AbortReason_name, Aborted_AbortReason_value)
+ proto.RegisterType((*BuildEventId)(nil), "build_event_stream.BuildEventId")
+ proto.RegisterType((*BuildEventId_UnknownBuildEventId)(nil), "build_event_stream.BuildEventId.UnknownBuildEventId")
+ proto.RegisterType((*BuildEventId_ProgressId)(nil), "build_event_stream.BuildEventId.ProgressId")
+ proto.RegisterType((*BuildEventId_BuildStartedId)(nil), "build_event_stream.BuildEventId.BuildStartedId")
+ proto.RegisterType((*BuildEventId_UnstructuredCommandLineId)(nil), "build_event_stream.BuildEventId.UnstructuredCommandLineId")
+ proto.RegisterType((*BuildEventId_StructuredCommandLineId)(nil), "build_event_stream.BuildEventId.StructuredCommandLineId")
+ proto.RegisterType((*BuildEventId_WorkspaceStatusId)(nil), "build_event_stream.BuildEventId.WorkspaceStatusId")
+ proto.RegisterType((*BuildEventId_OptionsParsedId)(nil), "build_event_stream.BuildEventId.OptionsParsedId")
+ proto.RegisterType((*BuildEventId_FetchId)(nil), "build_event_stream.BuildEventId.FetchId")
+ proto.RegisterType((*BuildEventId_PatternExpandedId)(nil), "build_event_stream.BuildEventId.PatternExpandedId")
+ proto.RegisterType((*BuildEventId_TargetConfiguredId)(nil), "build_event_stream.BuildEventId.TargetConfiguredId")
+ proto.RegisterType((*BuildEventId_NamedSetOfFilesId)(nil), "build_event_stream.BuildEventId.NamedSetOfFilesId")
+ proto.RegisterType((*BuildEventId_ConfigurationId)(nil), "build_event_stream.BuildEventId.ConfigurationId")
+ proto.RegisterType((*BuildEventId_TargetCompletedId)(nil), "build_event_stream.BuildEventId.TargetCompletedId")
+ proto.RegisterType((*BuildEventId_ActionCompletedId)(nil), "build_event_stream.BuildEventId.ActionCompletedId")
+ proto.RegisterType((*BuildEventId_UnconfiguredLabelId)(nil), "build_event_stream.BuildEventId.UnconfiguredLabelId")
+ proto.RegisterType((*BuildEventId_ConfiguredLabelId)(nil), "build_event_stream.BuildEventId.ConfiguredLabelId")
+ proto.RegisterType((*BuildEventId_TestResultId)(nil), "build_event_stream.BuildEventId.TestResultId")
+ proto.RegisterType((*BuildEventId_TestSummaryId)(nil), "build_event_stream.BuildEventId.TestSummaryId")
+ proto.RegisterType((*BuildEventId_BuildFinishedId)(nil), "build_event_stream.BuildEventId.BuildFinishedId")
+ proto.RegisterType((*BuildEventId_BuildToolLogsId)(nil), "build_event_stream.BuildEventId.BuildToolLogsId")
+ proto.RegisterType((*BuildEventId_BuildMetricsId)(nil), "build_event_stream.BuildEventId.BuildMetricsId")
+ proto.RegisterType((*Progress)(nil), "build_event_stream.Progress")
+ proto.RegisterType((*Aborted)(nil), "build_event_stream.Aborted")
+ proto.RegisterType((*BuildStarted)(nil), "build_event_stream.BuildStarted")
+ proto.RegisterType((*UnstructuredCommandLine)(nil), "build_event_stream.UnstructuredCommandLine")
+ proto.RegisterType((*OptionsParsed)(nil), "build_event_stream.OptionsParsed")
+ proto.RegisterType((*Fetch)(nil), "build_event_stream.Fetch")
+ proto.RegisterType((*WorkspaceStatus)(nil), "build_event_stream.WorkspaceStatus")
+ proto.RegisterType((*WorkspaceStatus_Item)(nil), "build_event_stream.WorkspaceStatus.Item")
+ proto.RegisterType((*Configuration)(nil), "build_event_stream.Configuration")
+ proto.RegisterMapType((map[string]string)(nil), "build_event_stream.Configuration.MakeVariableEntry")
+ proto.RegisterType((*PatternExpanded)(nil), "build_event_stream.PatternExpanded")
+ proto.RegisterType((*TargetConfigured)(nil), "build_event_stream.TargetConfigured")
+ proto.RegisterType((*File)(nil), "build_event_stream.File")
+ proto.RegisterType((*NamedSetOfFiles)(nil), "build_event_stream.NamedSetOfFiles")
+ proto.RegisterType((*ActionExecuted)(nil), "build_event_stream.ActionExecuted")
+ proto.RegisterType((*OutputGroup)(nil), "build_event_stream.OutputGroup")
+ proto.RegisterType((*TargetComplete)(nil), "build_event_stream.TargetComplete")
+ proto.RegisterType((*TestResult)(nil), "build_event_stream.TestResult")
+ proto.RegisterType((*TestResult_ExecutionInfo)(nil), "build_event_stream.TestResult.ExecutionInfo")
+ proto.RegisterType((*TestResult_ExecutionInfo_TimingBreakdown)(nil), "build_event_stream.TestResult.ExecutionInfo.TimingBreakdown")
+ proto.RegisterType((*TestResult_ExecutionInfo_ResourceUsage)(nil), "build_event_stream.TestResult.ExecutionInfo.ResourceUsage")
+ proto.RegisterType((*TestSummary)(nil), "build_event_stream.TestSummary")
+ proto.RegisterType((*BuildFinished)(nil), "build_event_stream.BuildFinished")
+ proto.RegisterType((*BuildFinished_ExitCode)(nil), "build_event_stream.BuildFinished.ExitCode")
+ proto.RegisterType((*BuildMetrics)(nil), "build_event_stream.BuildMetrics")
+ proto.RegisterType((*BuildMetrics_ActionSummary)(nil), "build_event_stream.BuildMetrics.ActionSummary")
+ proto.RegisterType((*BuildMetrics_MemoryMetrics)(nil), "build_event_stream.BuildMetrics.MemoryMetrics")
+ proto.RegisterType((*BuildMetrics_TargetMetrics)(nil), "build_event_stream.BuildMetrics.TargetMetrics")
+ proto.RegisterType((*BuildMetrics_PackageMetrics)(nil), "build_event_stream.BuildMetrics.PackageMetrics")
+ proto.RegisterType((*BuildToolLogs)(nil), "build_event_stream.BuildToolLogs")
+ proto.RegisterType((*BuildEvent)(nil), "build_event_stream.BuildEvent")
+}
+
+func init() { proto.RegisterFile("build_event_stream.proto", fileDescriptor_817c6a9aafd47c5b) }
+
+var fileDescriptor_817c6a9aafd47c5b = []byte{
+ // 3414 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x5a, 0xcd, 0x8f, 0xdb, 0x48,
+ 0x76, 0x6f, 0x7d, 0xb5, 0xa4, 0xd7, 0x2d, 0x89, 0x2a, 0x7f, 0xc9, 0xf4, 0xc4, 0x1f, 0xf2, 0x24,
+ 0x33, 0x63, 0x8f, 0x65, 0xc7, 0x13, 0x24, 0x1e, 0xc7, 0x81, 0xa3, 0xee, 0x56, 0x77, 0xcb, 0x56,
+ 0x4b, 0x0a, 0xa5, 0xf6, 0x7c, 0x00, 0x01, 0xc1, 0x26, 0xab, 0xd5, 0x44, 0x53, 0x24, 0x43, 0x16,
+ 0xdb, 0xee, 0x01, 0x82, 0x24, 0x97, 0x1c, 0x72, 0xcc, 0x6d, 0x72, 0xce, 0x21, 0x87, 0x5c, 0x16,
+ 0x58, 0x60, 0x6f, 0xbb, 0xc0, 0x62, 0xff, 0x8e, 0xdd, 0xe3, 0xfe, 0x15, 0x0b, 0x2c, 0xea, 0x83,
+ 0x14, 0x49, 0x49, 0x96, 0x3c, 0x33, 0x98, 0x93, 0x54, 0x8f, 0xef, 0xfd, 0xaa, 0xea, 0xd5, 0xab,
+ 0xf7, 0x51, 0x55, 0xd0, 0x38, 0x09, 0x4c, 0xcb, 0x50, 0xf1, 0x05, 0xb6, 0x89, 0xea, 0x13, 0x0f,
+ 0x6b, 0xd3, 0x96, 0xeb, 0x39, 0xc4, 0x41, 0x68, 0xfe, 0x8b, 0xfc, 0x99, 0xef, 0xe9, 0x8f, 0xa7,
+ 0x9a, 0x69, 0x3f, 0x66, 0x3c, 0x27, 0xc1, 0xe9, 0x63, 0xd3, 0xbe, 0x70, 0x74, 0x8d, 0x98, 0x8e,
+ 0xad, 0xba, 0x8e, 0x65, 0xea, 0x97, 0x5c, 0x5c, 0xfe, 0x78, 0x9e, 0x55, 0x77, 0xa6, 0x53, 0xcd,
+ 0x36, 0x54, 0xcb, 0xb4, 0x31, 0xe7, 0x6a, 0xfe, 0x52, 0x86, 0xed, 0x1d, 0xda, 0x4f, 0x87, 0x76,
+ 0xd3, 0x35, 0xd0, 0x10, 0x8a, 0x81, 0x7d, 0x6e, 0x3b, 0x6f, 0xed, 0x46, 0xe6, 0x6e, 0xe6, 0xd3,
+ 0xad, 0xa7, 0x7f, 0xd3, 0x5a, 0x30, 0xc2, 0xb8, 0x48, 0xeb, 0x98, 0xf3, 0xc7, 0x69, 0x87, 0x1b,
+ 0x4a, 0x08, 0x83, 0xba, 0x50, 0x72, 0x3d, 0x67, 0xe2, 0x61, 0xdf, 0x6f, 0x64, 0x19, 0xe4, 0xc3,
+ 0x95, 0x90, 0x43, 0x21, 0xc0, 0x90, 0x22, 0x71, 0xf4, 0x1a, 0x8a, 0x3e, 0xd1, 0x3c, 0x82, 0x8d,
+ 0x46, 0x8e, 0x21, 0x3d, 0x5e, 0x89, 0xc4, 0x1a, 0x23, 0x2e, 0xc4, 0xc7, 0x25, 0x10, 0xd0, 0x3b,
+ 0xb8, 0x19, 0xd8, 0x3e, 0xf1, 0x02, 0x9d, 0x04, 0x1e, 0x36, 0xd4, 0xb8, 0x76, 0x1a, 0x5b, 0x0c,
+ 0xfe, 0xf9, 0x1a, 0x73, 0x9f, 0x21, 0xec, 0x72, 0x80, 0x9e, 0x69, 0x63, 0xd6, 0xd3, 0x8d, 0x60,
+ 0xf1, 0x47, 0xe4, 0xc1, 0x8d, 0x65, 0xfd, 0x22, 0xd6, 0xef, 0xb3, 0x95, 0xfd, 0x8e, 0x96, 0xf6,
+ 0x7a, 0x6d, 0x71, 0x9f, 0x2a, 0x48, 0x6f, 0x1d, 0xef, 0xdc, 0x77, 0x35, 0x1d, 0xab, 0x3e, 0xd1,
+ 0x48, 0xe0, 0x37, 0xaa, 0xac, 0xb3, 0xa7, 0x2b, 0x3b, 0xfb, 0x2a, 0x14, 0x1c, 0x31, 0x39, 0xd6,
+ 0x4d, 0xed, 0x6d, 0x92, 0x88, 0xbe, 0x81, 0xaa, 0xe3, 0x52, 0x33, 0xf4, 0x55, 0x57, 0xf3, 0x7c,
+ 0x6c, 0x34, 0xb6, 0x19, 0xfc, 0x93, 0x95, 0xf0, 0x03, 0x2e, 0x36, 0x64, 0x52, 0x0c, 0xbc, 0xe2,
+ 0xc4, 0x49, 0xe8, 0x1f, 0xa1, 0x70, 0x8a, 0x89, 0x7e, 0xd6, 0xa8, 0x33, 0xc4, 0x4f, 0x57, 0x22,
+ 0xee, 0x53, 0x6e, 0x86, 0xc4, 0x05, 0xd1, 0xd7, 0x50, 0xd1, 0x1d, 0xfb, 0xd4, 0x9c, 0x04, 0x1e,
+ 0xdb, 0x2a, 0x8d, 0xda, 0x9a, 0x63, 0xdb, 0x8d, 0x4b, 0xf1, 0xb1, 0x25, 0x80, 0xd0, 0x09, 0xd4,
+ 0x89, 0xe6, 0x4d, 0x30, 0x51, 0x43, 0x3a, 0x36, 0x1a, 0x12, 0x43, 0xff, 0x62, 0x25, 0xfa, 0x98,
+ 0x49, 0xee, 0x46, 0x82, 0xac, 0x03, 0x89, 0xa4, 0xa8, 0xa8, 0x0f, 0x45, 0x57, 0x23, 0x04, 0x7b,
+ 0x76, 0x23, 0xbf, 0xe6, 0x92, 0x0d, 0x39, 0x7f, 0xe7, 0x9d, 0xab, 0xd9, 0x46, 0x68, 0xf9, 0x02,
+ 0x04, 0xfd, 0x33, 0xd4, 0xc4, 0x5f, 0xd5, 0x3f, 0x37, 0x5d, 0x17, 0x1b, 0x0d, 0xf8, 0x11, 0xb8,
+ 0x55, 0x01, 0x36, 0xe2, 0x58, 0xe8, 0x9f, 0xa0, 0x6c, 0x6b, 0x53, 0x6c, 0xa8, 0x3e, 0x26, 0x8d,
+ 0xca, 0x9a, 0xc0, 0x7d, 0x2a, 0x31, 0xc2, 0x64, 0x70, 0xba, 0x6f, 0x5a, 0x58, 0x6c, 0x7c, 0x5b,
+ 0x10, 0xa9, 0xf5, 0x46, 0x5a, 0x9e, 0xba, 0x16, 0xa6, 0x1e, 0xa0, 0xb0, 0x26, 0x72, 0xa8, 0x64,
+ 0x21, 0xc7, 0xad, 0x97, 0x24, 0x89, 0xb4, 0x03, 0x4d, 0x67, 0x4e, 0x74, 0xd6, 0xc1, 0xe6, 0x9a,
+ 0x1d, 0xb4, 0x99, 0x60, 0xaa, 0x03, 0x2d, 0x49, 0x44, 0x18, 0x50, 0x60, 0xcf, 0x4c, 0x44, 0xb5,
+ 0xb4, 0x13, 0x6c, 0x35, 0xae, 0xac, 0xed, 0x62, 0x67, 0xa2, 0x3d, 0x2a, 0xc9, 0x3a, 0xa9, 0x07,
+ 0x69, 0x32, 0x9d, 0xc7, 0x5c, 0x27, 0xd7, 0xd6, 0x9c, 0xc7, 0xee, 0x82, 0x2e, 0x6a, 0xe9, 0x0e,
+ 0x86, 0xb0, 0x45, 0xb0, 0x4f, 0x54, 0x0f, 0xfb, 0x81, 0x45, 0x1a, 0x25, 0x86, 0xfd, 0x68, 0xf5,
+ 0x22, 0x60, 0x9f, 0x28, 0x4c, 0x84, 0xc1, 0x02, 0x89, 0xda, 0x68, 0x04, 0xdb, 0x0c, 0xd1, 0x0f,
+ 0xa6, 0x53, 0xcd, 0xbb, 0x6c, 0x14, 0x19, 0x64, 0x6b, 0x2d, 0xc8, 0x11, 0x97, 0x61, 0x98, 0x6c,
+ 0x5c, 0x82, 0x40, 0xbd, 0x11, 0x97, 0x3f, 0x35, 0x6d, 0xd3, 0x3f, 0xc3, 0x46, 0xa3, 0xbc, 0xe6,
+ 0x8e, 0x67, 0x8d, 0x7d, 0x21, 0xc5, 0x77, 0xfc, 0x49, 0x9c, 0x84, 0xbe, 0x85, 0x1a, 0xc7, 0x20,
+ 0x8e, 0x63, 0xa9, 0x96, 0x33, 0xf1, 0x1b, 0x57, 0x3f, 0x04, 0x7b, 0xec, 0x38, 0x56, 0xcf, 0x99,
+ 0xf8, 0x31, 0xec, 0x90, 0x84, 0xde, 0x00, 0x27, 0xa8, 0x53, 0x4c, 0x3c, 0x53, 0xf7, 0x1b, 0xd7,
+ 0x3f, 0x24, 0xcc, 0x1d, 0x71, 0x21, 0x06, 0xbc, 0x7d, 0x12, 0xa3, 0xc8, 0x8f, 0xe1, 0xca, 0x82,
+ 0x28, 0x8d, 0x1a, 0x50, 0x34, 0x30, 0xd1, 0x4c, 0xcb, 0x67, 0xc1, 0xbe, 0xac, 0x84, 0x4d, 0xf9,
+ 0x31, 0xc0, 0x2c, 0x06, 0xa3, 0x7b, 0xb0, 0xed, 0xb8, 0xda, 0xbf, 0x04, 0x58, 0xd5, 0x9d, 0xc0,
+ 0x26, 0x8c, 0xb9, 0xa0, 0x6c, 0x71, 0xda, 0x2e, 0x25, 0xc9, 0x12, 0x54, 0x93, 0xa1, 0x56, 0xbe,
+ 0x05, 0x37, 0x97, 0x46, 0x47, 0xf9, 0x00, 0x6e, 0x2c, 0x09, 0x61, 0xe8, 0x73, 0x40, 0xf1, 0x90,
+ 0x28, 0x8c, 0x98, 0x8f, 0x4f, 0xd2, 0x67, 0xac, 0xcc, 0x1e, 0xe5, 0x2b, 0x50, 0x9f, 0x0b, 0x4f,
+ 0x72, 0x1d, 0x6a, 0xa9, 0xa0, 0x22, 0xdf, 0x82, 0xa2, 0x88, 0x0a, 0x48, 0x82, 0x5c, 0xe0, 0x85,
+ 0x88, 0xf4, 0xaf, 0xfc, 0x08, 0xea, 0x73, 0x8e, 0x8d, 0x2a, 0x27, 0xf4, 0xba, 0x99, 0xbb, 0x39,
+ 0xaa, 0x1c, 0xd1, 0x94, 0x77, 0x00, 0xcd, 0x7b, 0x6e, 0x74, 0x15, 0x0a, 0xf1, 0xa1, 0xf2, 0x06,
+ 0xba, 0x0e, 0x9b, 0x9a, 0xef, 0x62, 0x9d, 0xb0, 0xdc, 0xa7, 0xac, 0x88, 0x96, 0x7c, 0x1f, 0xea,
+ 0x73, 0x2e, 0x0f, 0x55, 0x21, 0x6b, 0x1a, 0x42, 0x3e, 0x6b, 0x1a, 0xf2, 0x3d, 0xa8, 0xa5, 0x02,
+ 0xd0, 0x1c, 0xcb, 0xf7, 0x19, 0xa8, 0xcf, 0x79, 0xb8, 0x25, 0x63, 0x79, 0x93, 0x8e, 0x82, 0xb9,
+ 0x1f, 0x16, 0x05, 0xd3, 0x31, 0x70, 0xd9, 0x1c, 0xff, 0x2f, 0x03, 0xf5, 0x39, 0xe7, 0x88, 0xfe,
+ 0x12, 0xaa, 0xae, 0x67, 0xd2, 0x5d, 0xaa, 0x3a, 0x01, 0x71, 0x03, 0x22, 0x06, 0x59, 0x11, 0xd4,
+ 0x01, 0x23, 0xce, 0xa6, 0x90, 0xfd, 0x19, 0xa6, 0x20, 0x3f, 0xa4, 0x1b, 0x64, 0xce, 0xc7, 0x2e,
+ 0xd6, 0xa3, 0xfc, 0x1f, 0x19, 0xa8, 0xef, 0xae, 0xc7, 0x3b, 0x3f, 0xe0, 0xec, 0x4f, 0x33, 0xe0,
+ 0x5f, 0x67, 0x60, 0x3b, 0xee, 0x54, 0xd7, 0xed, 0xbe, 0xf0, 0xd3, 0x2c, 0xb9, 0x04, 0x39, 0x2f,
+ 0xe0, 0x93, 0x29, 0x28, 0xf4, 0x2f, 0xed, 0xdf, 0x3f, 0xd3, 0x3c, 0x9e, 0x99, 0x17, 0x14, 0xde,
+ 0xa0, 0x9b, 0x88, 0x6e, 0x9a, 0xa9, 0x4b, 0x58, 0xea, 0x52, 0x50, 0xc2, 0xa6, 0xfc, 0xaf, 0x50,
+ 0x49, 0x78, 0xf0, 0x9f, 0x59, 0x7f, 0x75, 0xa8, 0xa5, 0x3c, 0x7d, 0x44, 0x9a, 0x39, 0xe8, 0xc8,
+ 0xab, 0x45, 0x9e, 0x75, 0x27, 0x4f, 0xf7, 0x5f, 0xf3, 0x39, 0x94, 0x42, 0xf7, 0x48, 0xad, 0xdf,
+ 0x27, 0x86, 0x13, 0xd9, 0xb1, 0x68, 0x09, 0x3a, 0xf6, 0xbc, 0x70, 0x57, 0xf0, 0x56, 0xf3, 0x17,
+ 0x59, 0x28, 0xb6, 0x4f, 0x1c, 0x56, 0x83, 0xbc, 0x84, 0x4d, 0x0f, 0x6b, 0xbe, 0xc3, 0x8b, 0xad,
+ 0xea, 0xd3, 0x4f, 0x16, 0x4d, 0x4b, 0x30, 0xf3, 0x5f, 0x85, 0xb1, 0x2b, 0x42, 0x0c, 0xdd, 0x85,
+ 0x2d, 0x03, 0xfb, 0xba, 0x67, 0xba, 0x91, 0x72, 0xca, 0x4a, 0x9c, 0xd4, 0xfc, 0x6d, 0x06, 0xb6,
+ 0x62, 0x92, 0x68, 0x0b, 0x8a, 0xc7, 0xfd, 0xd7, 0xfd, 0xc1, 0x57, 0x7d, 0x69, 0x03, 0x5d, 0x05,
+ 0xe9, 0x78, 0xd4, 0x51, 0xd4, 0x6e, 0x7f, 0xdc, 0x51, 0x94, 0xe3, 0xe1, 0xb8, 0xb3, 0x27, 0x65,
+ 0x50, 0x15, 0xa0, 0x3f, 0x50, 0xdb, 0xfd, 0x76, 0xef, 0x9b, 0x6f, 0x3b, 0x52, 0x09, 0x6d, 0x43,
+ 0xa9, 0x3f, 0x50, 0x77, 0x8e, 0xbb, 0xbd, 0x3d, 0xa9, 0x4c, 0x5b, 0xe3, 0xee, 0x51, 0x47, 0x1d,
+ 0x1c, 0x8f, 0xa5, 0x2c, 0xba, 0x0d, 0xb2, 0xd2, 0x39, 0x1a, 0x8c, 0x3b, 0x6a, 0xa7, 0xff, 0xa6,
+ 0xab, 0x0c, 0xfa, 0x47, 0x9d, 0xfe, 0x58, 0xdd, 0x6f, 0x77, 0x7b, 0xc7, 0x4a, 0x47, 0xca, 0x51,
+ 0x6e, 0x06, 0xde, 0x6f, 0xf7, 0xa4, 0x3c, 0xba, 0x02, 0xb5, 0xde, 0xa0, 0xbd, 0xd7, 0xed, 0x1f,
+ 0x44, 0x2c, 0x05, 0x3a, 0x08, 0xd6, 0xd7, 0xa8, 0x3b, 0x8a, 0xa8, 0x9b, 0x74, 0x9c, 0xa3, 0xd7,
+ 0xdd, 0xe1, 0xb0, 0xb3, 0x27, 0x15, 0x9b, 0xbf, 0xcb, 0x8a, 0x32, 0x55, 0x84, 0x17, 0x84, 0x20,
+ 0x1f, 0x04, 0x91, 0x23, 0x64, 0xff, 0xd1, 0x03, 0xa8, 0xb3, 0xda, 0x4e, 0x25, 0xe6, 0x14, 0xab,
+ 0x53, 0xd3, 0xb2, 0x4c, 0x5e, 0x71, 0xe6, 0x94, 0x1a, 0xfb, 0x30, 0x36, 0xa7, 0xf8, 0x88, 0x91,
+ 0x69, 0x90, 0x89, 0x05, 0xf1, 0x0b, 0xec, 0xf9, 0xa1, 0x33, 0x29, 0x2b, 0x52, 0x14, 0x93, 0xdf,
+ 0x70, 0x3a, 0x7a, 0x0c, 0x57, 0xc2, 0xda, 0x26, 0xae, 0xed, 0x3c, 0x63, 0x47, 0xe2, 0xd3, 0xde,
+ 0xec, 0x0b, 0x35, 0x7b, 0x11, 0xa9, 0xd8, 0x86, 0x2b, 0x2b, 0x61, 0x13, 0x3d, 0x84, 0x3a, 0xad,
+ 0x9c, 0x4c, 0x7b, 0xa2, 0x1a, 0xa6, 0x87, 0x75, 0xe2, 0x78, 0x97, 0x2c, 0xd3, 0x2c, 0x2b, 0x92,
+ 0xf8, 0xb0, 0x17, 0xd2, 0x69, 0xbf, 0xb3, 0xa2, 0x6d, 0xc6, 0x5e, 0xe4, 0xfd, 0x46, 0x9f, 0x66,
+ 0x02, 0x7f, 0x01, 0xe0, 0x63, 0xef, 0x02, 0x7b, 0xaa, 0x6b, 0x1a, 0x2c, 0x39, 0xcb, 0x29, 0x65,
+ 0x4e, 0x19, 0x9a, 0x46, 0xf3, 0x11, 0xdc, 0x58, 0x12, 0x92, 0xa9, 0x42, 0x35, 0x6f, 0xe2, 0x8b,
+ 0x50, 0xc7, 0xfe, 0x37, 0xff, 0x3f, 0x0b, 0x95, 0x44, 0x1c, 0x45, 0x9f, 0x00, 0xd7, 0x64, 0xe0,
+ 0xaa, 0x62, 0xd6, 0x42, 0xa0, 0x2a, 0xc8, 0x82, 0x1d, 0x3d, 0x83, 0x06, 0x7e, 0xe7, 0x5a, 0xa6,
+ 0x6e, 0x52, 0x33, 0x4e, 0x4a, 0x64, 0x99, 0xc4, 0xf5, 0xf0, 0xfb, 0x28, 0x29, 0x79, 0x13, 0x4a,
+ 0xfa, 0x54, 0x54, 0xc3, 0x39, 0x1e, 0x77, 0xf5, 0x29, 0x1f, 0xe3, 0x03, 0xa8, 0x47, 0xa0, 0x11,
+ 0x4f, 0x9e, 0xf1, 0xd4, 0xc2, 0x0f, 0xbb, 0x82, 0xf7, 0x0d, 0xd4, 0xe7, 0x4e, 0x46, 0x84, 0xf3,
+ 0xfb, 0xac, 0x75, 0x62, 0x69, 0xdf, 0xe1, 0xd6, 0xfc, 0xc9, 0x49, 0x37, 0xa2, 0x0c, 0x19, 0x41,
+ 0x91, 0xcc, 0x14, 0x85, 0x0e, 0x8f, 0x99, 0x0c, 0xd1, 0x26, 0x62, 0xd9, 0x8a, 0xb4, 0x3d, 0xd6,
+ 0x26, 0xcd, 0x7b, 0x50, 0x60, 0x29, 0x06, 0x5d, 0x7d, 0x3f, 0xd0, 0x75, 0xec, 0xf3, 0xb4, 0xaa,
+ 0xa4, 0x84, 0xcd, 0xe6, 0xbf, 0x41, 0x2d, 0x95, 0xad, 0xa0, 0x17, 0x90, 0x37, 0x09, 0x9e, 0x32,
+ 0x3d, 0x2e, 0xa9, 0x6d, 0x53, 0x22, 0xad, 0x2e, 0xc1, 0x53, 0x85, 0x49, 0xc9, 0x2d, 0xc8, 0xd3,
+ 0x16, 0xf5, 0xc7, 0xe7, 0xf8, 0x32, 0xcc, 0x69, 0xce, 0xf1, 0x25, 0x75, 0xa7, 0x17, 0x9a, 0x15,
+ 0xe0, 0x30, 0x7e, 0xb2, 0x46, 0xf3, 0x4f, 0x19, 0xa8, 0x24, 0x3c, 0x23, 0x92, 0xa1, 0x34, 0xb5,
+ 0xf1, 0xd4, 0xb1, 0x4d, 0x5d, 0x88, 0x47, 0x6d, 0x74, 0x1f, 0x2a, 0xae, 0xa5, 0x91, 0x53, 0xc7,
+ 0x9b, 0xaa, 0xb4, 0x16, 0x13, 0x58, 0xdb, 0x21, 0x91, 0x66, 0x30, 0xb4, 0x6b, 0xdd, 0x0d, 0xc4,
+ 0xde, 0xa1, 0x7f, 0x69, 0xb5, 0x3d, 0xd5, 0xce, 0xb1, 0x7a, 0xa1, 0x79, 0xa6, 0x76, 0x62, 0xf1,
+ 0x35, 0x5a, 0x52, 0x0f, 0x27, 0x06, 0xd3, 0x3a, 0xd2, 0xce, 0xf1, 0x1b, 0x21, 0xd5, 0xb1, 0x89,
+ 0x77, 0xa9, 0x6c, 0x4f, 0x63, 0x24, 0xf9, 0x25, 0xd4, 0xe7, 0x58, 0xd6, 0x9d, 0xfb, 0xf3, 0xec,
+ 0xb3, 0x4c, 0xb3, 0x0e, 0xb5, 0x54, 0xa6, 0xd7, 0xfc, 0xf7, 0x0c, 0x48, 0xe9, 0x74, 0x0e, 0xdd,
+ 0x81, 0x2d, 0x51, 0x70, 0x9e, 0x9b, 0x76, 0xe8, 0x66, 0x80, 0x93, 0x5e, 0x9b, 0xb6, 0x81, 0xbe,
+ 0x84, 0x32, 0xaf, 0x5a, 0xcc, 0xef, 0x78, 0x37, 0xd5, 0xa7, 0x1f, 0x2d, 0x9a, 0x1f, 0x8b, 0x71,
+ 0xe6, 0x77, 0x58, 0x29, 0x11, 0xf1, 0x8f, 0x8e, 0x97, 0x5a, 0x0f, 0x37, 0x6e, 0xfa, 0xb7, 0x39,
+ 0x86, 0x3c, 0x4d, 0x01, 0xe9, 0x26, 0x64, 0x6a, 0x16, 0x5e, 0x8d, 0xfe, 0x47, 0x88, 0x66, 0xab,
+ 0x26, 0x9f, 0xc9, 0xe1, 0x06, 0xcd, 0x57, 0x4d, 0xf4, 0x11, 0x94, 0x74, 0xc7, 0x26, 0xd8, 0x26,
+ 0x3e, 0xd3, 0xfb, 0x36, 0x2d, 0x96, 0x43, 0xca, 0xce, 0x26, 0xe4, 0x4f, 0x4d, 0x0b, 0x37, 0xff,
+ 0x3b, 0x03, 0xb5, 0x54, 0x8e, 0x89, 0x5a, 0x50, 0xa0, 0xdf, 0x7c, 0x61, 0x6e, 0x8d, 0x45, 0x43,
+ 0xa6, 0x9c, 0x0a, 0x67, 0x43, 0x03, 0x28, 0xd3, 0x3f, 0xb4, 0x94, 0xe7, 0x1b, 0xf7, 0x07, 0xd5,
+ 0xf2, 0x4a, 0x89, 0x82, 0x8c, 0x30, 0xf1, 0x9b, 0xdf, 0xe7, 0xa0, 0xca, 0x73, 0xc2, 0xce, 0x3b,
+ 0xac, 0x07, 0xd4, 0x97, 0x2f, 0xdd, 0x2e, 0x54, 0x1f, 0xe4, 0xd2, 0xc5, 0xcc, 0x91, 0x95, 0x15,
+ 0xf6, 0x1f, 0xdd, 0x82, 0x32, 0x7e, 0x47, 0x1d, 0x80, 0x63, 0x60, 0x91, 0x7f, 0x94, 0x28, 0x61,
+ 0xd7, 0x31, 0x30, 0x7a, 0x12, 0xc5, 0x62, 0x9e, 0x17, 0x2e, 0x9f, 0x5f, 0x18, 0xa5, 0x9f, 0x44,
+ 0x51, 0x3a, 0xbf, 0x86, 0x04, 0xf6, 0x3c, 0xd4, 0x08, 0xf3, 0x14, 0xe6, 0xd9, 0x77, 0xb2, 0x8d,
+ 0x4c, 0x98, 0xab, 0x7c, 0x9b, 0xce, 0x55, 0x8a, 0x3f, 0x2c, 0x57, 0x61, 0x98, 0xa9, 0x84, 0xeb,
+ 0xe5, 0x5c, 0xd6, 0xbc, 0xb9, 0x62, 0xbc, 0xa9, 0x7c, 0xfa, 0x1e, 0x6c, 0x27, 0x4e, 0x1a, 0xcb,
+ 0xcc, 0xfc, 0xb6, 0x62, 0x05, 0x55, 0xf3, 0x1d, 0x6c, 0x71, 0xe6, 0x03, 0xcf, 0x09, 0xdc, 0x85,
+ 0xd6, 0x98, 0xb0, 0x87, 0xdc, 0x8f, 0xb7, 0x87, 0x57, 0xf9, 0x52, 0x56, 0xca, 0x35, 0xff, 0x90,
+ 0x85, 0x6a, 0xb2, 0x8a, 0x79, 0x8f, 0x55, 0xdc, 0x4f, 0xee, 0xcd, 0xd9, 0x32, 0xc4, 0xf7, 0xe7,
+ 0x3f, 0xc4, 0xf7, 0xe7, 0xe6, 0xea, 0xfd, 0xc9, 0x00, 0x66, 0x7b, 0x74, 0x07, 0xb6, 0xb9, 0x9a,
+ 0xd5, 0x09, 0xd5, 0x85, 0x30, 0xfd, 0x3b, 0x8b, 0x10, 0x62, 0x2a, 0x53, 0xb6, 0x9c, 0x98, 0xfe,
+ 0x0e, 0x40, 0x32, 0xa7, 0xae, 0xe3, 0x11, 0xcd, 0x26, 0xe1, 0xa2, 0xe5, 0xdf, 0xbf, 0xed, 0xd8,
+ 0x28, 0x6a, 0x91, 0x94, 0x58, 0xba, 0x39, 0x87, 0x81, 0x9e, 0xc0, 0x55, 0x36, 0x3b, 0x9a, 0xe9,
+ 0x38, 0x01, 0x51, 0x7d, 0xac, 0x3b, 0xb6, 0xe1, 0x33, 0x83, 0xcb, 0x29, 0x88, 0x7e, 0x1b, 0xf3,
+ 0x4f, 0x23, 0xfe, 0xa5, 0xf9, 0xab, 0x12, 0xc0, 0xac, 0x5e, 0x40, 0x7f, 0x4b, 0xcd, 0x9e, 0x1d,
+ 0x02, 0x17, 0x98, 0x6e, 0x6e, 0x2f, 0xd5, 0x0d, 0xe3, 0x52, 0x04, 0x37, 0x2d, 0xde, 0xf8, 0x3f,
+ 0x35, 0x3c, 0x38, 0x28, 0xf3, 0xe2, 0x8d, 0x53, 0xf7, 0x38, 0x91, 0xb2, 0xe9, 0x9a, 0x7e, 0x86,
+ 0x0d, 0xd5, 0x72, 0x74, 0xcd, 0xb2, 0x2e, 0xd9, 0xee, 0x2a, 0x29, 0x15, 0x4e, 0xed, 0x71, 0x22,
+ 0xda, 0x83, 0x3b, 0x6c, 0x1a, 0xa2, 0x26, 0xe0, 0x99, 0x82, 0xc8, 0xdc, 0x54, 0xec, 0x3a, 0xfa,
+ 0x19, 0x5b, 0xba, 0x9c, 0x72, 0x8b, 0xb2, 0xb5, 0x39, 0x17, 0xcb, 0x17, 0x78, 0x1a, 0xd7, 0xa1,
+ 0x2c, 0xe8, 0x25, 0x7c, 0x94, 0x40, 0x31, 0xc4, 0x9e, 0x09, 0x53, 0xc0, 0x1c, 0x83, 0xb8, 0x19,
+ 0x83, 0xd8, 0x13, 0x1c, 0x22, 0x19, 0xdc, 0x07, 0xc4, 0x01, 0xf8, 0x09, 0xa0, 0x58, 0xaa, 0xec,
+ 0x0a, 0x0f, 0x29, 0x31, 0x40, 0x26, 0x22, 0xd6, 0xa9, 0x01, 0xc5, 0xb7, 0x9a, 0x67, 0x9b, 0xf6,
+ 0xa4, 0x51, 0xe4, 0x99, 0x8b, 0x68, 0xa2, 0x11, 0x54, 0x31, 0x73, 0x77, 0x14, 0xdf, 0xb4, 0x4f,
+ 0x1d, 0x71, 0x70, 0xf6, 0xf9, 0x32, 0xb5, 0xf3, 0x65, 0x6a, 0x75, 0x42, 0xa1, 0xae, 0x7d, 0xea,
+ 0x28, 0x15, 0x1c, 0x6f, 0xca, 0xbf, 0xcf, 0x43, 0x25, 0xc1, 0x80, 0x1e, 0x42, 0x2d, 0x6d, 0x11,
+ 0xec, 0xa8, 0x86, 0x99, 0x55, 0x95, 0x24, 0x2c, 0x82, 0x06, 0x7e, 0x9f, 0x78, 0x1a, 0xc1, 0x93,
+ 0x4b, 0x11, 0x27, 0xa3, 0x36, 0xcd, 0xf3, 0xc4, 0xfa, 0x79, 0x78, 0xea, 0x10, 0x6c, 0xf1, 0x1c,
+ 0xb5, 0xa4, 0x88, 0x65, 0x55, 0x04, 0x35, 0xe9, 0x8d, 0x8b, 0x29, 0x6f, 0x2c, 0x43, 0xe9, 0xcc,
+ 0xf1, 0x09, 0x73, 0x22, 0x3c, 0x3d, 0x88, 0xda, 0x68, 0x02, 0x12, 0x31, 0xa7, 0x34, 0x0d, 0x3e,
+ 0xf1, 0xb0, 0x76, 0x6e, 0x38, 0x6f, 0xc3, 0xc3, 0xed, 0x17, 0x1f, 0xa2, 0x93, 0xd6, 0x98, 0x81,
+ 0xec, 0x84, 0x18, 0x4a, 0x8d, 0x24, 0x09, 0x48, 0x83, 0xaa, 0x87, 0x7d, 0x27, 0xf0, 0x74, 0xac,
+ 0x06, 0xbe, 0x36, 0xc1, 0x8d, 0x02, 0x5b, 0xd8, 0xe7, 0x1f, 0xd4, 0x8d, 0x22, 0x20, 0x8e, 0x29,
+ 0x82, 0x52, 0xf1, 0xe2, 0x4d, 0xf9, 0x7f, 0x32, 0x50, 0x4b, 0x8d, 0x03, 0x29, 0x50, 0xd0, 0xcf,
+ 0x4c, 0xcb, 0x10, 0x81, 0xf6, 0xc7, 0x4d, 0x8a, 0x43, 0x45, 0x0e, 0x39, 0x1b, 0x73, 0xc8, 0x34,
+ 0x51, 0x89, 0x95, 0x3b, 0xdc, 0xd6, 0x81, 0x44, 0x95, 0x8e, 0xfc, 0x25, 0x54, 0x12, 0x83, 0x5f,
+ 0xe8, 0xd6, 0x13, 0x09, 0x53, 0x4e, 0x24, 0x4c, 0xaf, 0xf2, 0xa5, 0x8c, 0x94, 0x6d, 0xfe, 0x57,
+ 0x16, 0xb6, 0x62, 0x95, 0x3a, 0xea, 0x40, 0xd5, 0xb9, 0xc0, 0x9e, 0x66, 0x59, 0xea, 0x07, 0xb9,
+ 0x90, 0x8a, 0x90, 0x12, 0x79, 0xef, 0x5f, 0x41, 0x8d, 0x38, 0x44, 0xb3, 0x54, 0x2f, 0xb0, 0x13,
+ 0xc7, 0x8a, 0x15, 0x46, 0x56, 0x02, 0x9b, 0x1d, 0x2c, 0xd2, 0x00, 0xed, 0x6a, 0xbe, 0xcf, 0xae,
+ 0xfc, 0xde, 0xbf, 0x21, 0x05, 0x1f, 0x95, 0x38, 0xd5, 0x4c, 0x0b, 0x1b, 0xab, 0xbc, 0xad, 0x22,
+ 0xf8, 0xd0, 0xa7, 0x20, 0xf1, 0xb1, 0xd8, 0xc1, 0x54, 0xe5, 0x16, 0xce, 0xec, 0xbd, 0xa0, 0x54,
+ 0x19, 0xbd, 0x1f, 0x4c, 0x77, 0x19, 0xb5, 0xf9, 0xc7, 0x0c, 0x54, 0x12, 0xe7, 0x06, 0x74, 0xcf,
+ 0x45, 0xea, 0x88, 0xc7, 0x2b, 0xbe, 0xe7, 0xc2, 0x39, 0x8b, 0xd0, 0x75, 0x10, 0xdf, 0x2e, 0x3c,
+ 0x45, 0x79, 0xb0, 0x34, 0x7c, 0x86, 0x5d, 0xb4, 0x3a, 0x62, 0x43, 0xc5, 0xb6, 0xd6, 0xe7, 0x80,
+ 0xf8, 0xc9, 0xf6, 0x82, 0x62, 0x57, 0xe2, 0x5f, 0x66, 0xd5, 0xae, 0xfc, 0x14, 0x4a, 0x21, 0xc6,
+ 0x92, 0x1c, 0x33, 0x1f, 0x4b, 0xa7, 0xd8, 0xff, 0xe6, 0x6f, 0x0a, 0xa2, 0xe4, 0x16, 0x67, 0x1f,
+ 0xe8, 0x18, 0xaa, 0xc2, 0x41, 0x86, 0x27, 0xf5, 0x99, 0x15, 0x27, 0xf5, 0x42, 0x52, 0x5c, 0x90,
+ 0x08, 0xfb, 0x51, 0x2a, 0x5a, 0xbc, 0x49, 0x61, 0xa7, 0x78, 0xea, 0x78, 0x97, 0xd1, 0x99, 0x77,
+ 0x76, 0x4d, 0xd8, 0x23, 0x26, 0x26, 0x5a, 0x4a, 0x65, 0x1a, 0x6f, 0x52, 0x58, 0x91, 0x24, 0x84,
+ 0xb0, 0xb9, 0x35, 0x61, 0x79, 0x1e, 0x12, 0xc1, 0x92, 0x78, 0x13, 0x7d, 0x0d, 0x35, 0x57, 0xd3,
+ 0xcf, 0xb5, 0x09, 0x8e, 0x70, 0xf3, 0x2b, 0x8e, 0xe8, 0x43, 0xdc, 0x21, 0x97, 0x0b, 0x81, 0xab,
+ 0x6e, 0xa2, 0x2d, 0xeb, 0x50, 0x49, 0xe8, 0x89, 0xfa, 0x60, 0xae, 0x29, 0x5f, 0xd5, 0x3d, 0xac,
+ 0x11, 0xcc, 0xcb, 0x90, 0x9c, 0x22, 0x96, 0xc1, 0xdf, 0xe5, 0x54, 0xf4, 0x59, 0x78, 0x77, 0xe5,
+ 0xab, 0x58, 0xe4, 0xd4, 0xe1, 0xb1, 0x87, 0xa0, 0x87, 0xa9, 0xb6, 0xdc, 0x85, 0x4a, 0x42, 0x6b,
+ 0xe8, 0x19, 0xdc, 0x0c, 0x7c, 0x6c, 0xa8, 0x67, 0x58, 0x73, 0x59, 0xae, 0xa4, 0xba, 0x8e, 0x4f,
+ 0x54, 0x36, 0x17, 0xd1, 0xdd, 0x35, 0xca, 0x70, 0x88, 0x35, 0x97, 0x26, 0x46, 0x43, 0xc7, 0x27,
+ 0x6c, 0x56, 0x32, 0x86, 0x4a, 0x42, 0x53, 0x34, 0xe6, 0x73, 0x5d, 0xf9, 0xaa, 0xe5, 0x68, 0x46,
+ 0x34, 0x5c, 0xa1, 0x41, 0xbf, 0xc7, 0x88, 0xe8, 0x11, 0xa0, 0x90, 0x2d, 0x76, 0x63, 0xca, 0xc7,
+ 0x2b, 0xae, 0x52, 0xfd, 0x59, 0x21, 0x26, 0x7f, 0x09, 0xd5, 0xa4, 0xe2, 0xa8, 0x5e, 0x84, 0xea,
+ 0x52, 0x1d, 0x85, 0x1a, 0x15, 0x3d, 0x35, 0xff, 0x5e, 0x6c, 0xd5, 0xe8, 0x76, 0xe5, 0x01, 0xe4,
+ 0x2c, 0x67, 0xb2, 0xb2, 0xf4, 0xa1, 0x4c, 0xcd, 0xff, 0xdc, 0x06, 0x98, 0x25, 0xb1, 0xe8, 0x49,
+ 0x74, 0xec, 0xbe, 0xf5, 0xf4, 0xee, 0xaa, 0x84, 0x57, 0xc9, 0x9a, 0x06, 0x7a, 0x01, 0x25, 0xe6,
+ 0xb5, 0x3d, 0x6c, 0x8b, 0x54, 0x62, 0xb5, 0x5c, 0x24, 0x41, 0xb3, 0x75, 0x4b, 0xf3, 0xa9, 0xf1,
+ 0xfa, 0x2c, 0x66, 0x5d, 0x65, 0xd1, 0x77, 0x8b, 0xd2, 0x8e, 0x38, 0x09, 0x3d, 0x8f, 0xbd, 0xab,
+ 0xe0, 0xb6, 0xbd, 0x30, 0xc1, 0x0d, 0xcf, 0x29, 0x13, 0x0f, 0x29, 0xfe, 0x0e, 0x8a, 0x1a, 0x3f,
+ 0x55, 0x14, 0xe6, 0x7b, 0xeb, 0x3d, 0x07, 0x8f, 0x87, 0x1b, 0x4a, 0xc8, 0x8d, 0x5e, 0xcc, 0x5e,
+ 0x60, 0x14, 0x56, 0x28, 0x43, 0x1c, 0xd5, 0xc5, 0x9f, 0x5c, 0x98, 0xef, 0x7b, 0x72, 0xb1, 0xbd,
+ 0xfc, 0x6d, 0xc8, 0x92, 0x43, 0xab, 0xf7, 0xbd, 0xb1, 0x18, 0x2d, 0x7f, 0x63, 0xc1, 0xef, 0xd4,
+ 0x6e, 0xb6, 0x12, 0xcf, 0x61, 0x92, 0xb0, 0x4b, 0x1e, 0x51, 0xbc, 0x9a, 0x7b, 0xe3, 0xc0, 0xaf,
+ 0xb7, 0xef, 0x2d, 0xac, 0x0b, 0xe2, 0x27, 0x67, 0xf3, 0x8f, 0x1a, 0x86, 0x0b, 0x1e, 0x64, 0xf0,
+ 0x77, 0x03, 0xf7, 0xd7, 0x38, 0x03, 0x5a, 0xf4, 0x02, 0xe3, 0xaf, 0xc3, 0x67, 0x12, 0xd7, 0xc4,
+ 0x04, 0x17, 0x19, 0x38, 0x65, 0x98, 0xbd, 0x8b, 0xe8, 0xa6, 0x2b, 0xd6, 0xfa, 0xf2, 0xf9, 0x24,
+ 0x8a, 0xd4, 0xf9, 0x87, 0x10, 0x6d, 0x28, 0x61, 0x71, 0xa4, 0x22, 0x4a, 0xd3, 0x85, 0xf3, 0x48,
+ 0x9d, 0xbe, 0x50, 0xab, 0x0c, 0xc5, 0xd0, 0x3e, 0x40, 0xcc, 0x25, 0xf0, 0xa7, 0x30, 0x1f, 0x2f,
+ 0xcc, 0x2a, 0x52, 0xc7, 0x35, 0x87, 0x1b, 0x4a, 0x4c, 0x12, 0xbd, 0x80, 0x4d, 0xee, 0xf8, 0x44,
+ 0x01, 0xde, 0x5c, 0x68, 0xdc, 0x89, 0x43, 0x88, 0xc3, 0x0d, 0x45, 0xc8, 0x20, 0x05, 0x50, 0xf4,
+ 0x7c, 0x41, 0x75, 0x4e, 0x55, 0x7e, 0x5e, 0x52, 0x5b, 0x3e, 0xa5, 0x54, 0x79, 0x4b, 0x97, 0xc6,
+ 0x4e, 0x1d, 0xbb, 0xec, 0x40, 0x79, 0xf6, 0xae, 0xa0, 0xb4, 0x7c, 0x50, 0xc9, 0x1a, 0xf8, 0x70,
+ 0x43, 0x99, 0x89, 0xa1, 0x76, 0xf2, 0xe6, 0x9d, 0xbf, 0xd8, 0xb8, 0xfd, 0xfe, 0xbc, 0x32, 0x75,
+ 0xd5, 0xbe, 0x97, 0xba, 0x6a, 0xe7, 0x77, 0xe2, 0x77, 0x96, 0x26, 0x6e, 0x9c, 0x2d, 0x7d, 0xb7,
+ 0xfe, 0x12, 0x4a, 0xd1, 0xad, 0x7a, 0x75, 0xb9, 0xbd, 0x24, 0x72, 0x18, 0xba, 0xce, 0xa1, 0x10,
+ 0x7a, 0x3d, 0x7f, 0x83, 0x7e, 0x63, 0x05, 0x4e, 0xe8, 0xc3, 0xe7, 0xaf, 0xcc, 0x0f, 0xd2, 0x57,
+ 0xe6, 0x8d, 0x15, 0x7e, 0x49, 0xc4, 0x91, 0xf4, 0x1d, 0xf9, 0x4e, 0x19, 0x8a, 0xae, 0x76, 0x49,
+ 0x23, 0xca, 0xab, 0x7c, 0x69, 0x4b, 0xda, 0x7e, 0x95, 0x2f, 0x5d, 0x91, 0xae, 0x3e, 0x38, 0x80,
+ 0x52, 0x78, 0x46, 0x90, 0xbc, 0x3b, 0x29, 0x43, 0x61, 0x74, 0xd4, 0xee, 0xf5, 0xa4, 0x0c, 0x02,
+ 0xd8, 0x3c, 0xea, 0xec, 0x75, 0x8f, 0x8f, 0xa4, 0x2c, 0x25, 0xf7, 0xda, 0xca, 0x81, 0xb8, 0xfb,
+ 0xe8, 0xf4, 0x07, 0xca, 0xd1, 0xe0, 0x78, 0x24, 0xe5, 0x1f, 0xfc, 0x6f, 0x86, 0x57, 0xe0, 0x62,
+ 0xb7, 0x56, 0xa0, 0xdc, 0x1f, 0xa8, 0xa3, 0x71, 0x7b, 0x7c, 0x3c, 0x92, 0x36, 0x28, 0xc4, 0xb0,
+ 0x3d, 0x1a, 0xb1, 0xfb, 0x97, 0x32, 0x14, 0xf6, 0x7b, 0xed, 0xd7, 0xdf, 0x48, 0x59, 0xda, 0xe3,
+ 0xb8, 0x7b, 0xd4, 0x19, 0x1c, 0x8f, 0xa5, 0x1c, 0xe5, 0xd9, 0x6f, 0x77, 0x7b, 0x9d, 0x3d, 0x29,
+ 0x8f, 0xaa, 0x00, 0xdd, 0xfe, 0xee, 0xe0, 0x68, 0xd8, 0xeb, 0x8c, 0x3b, 0x52, 0x01, 0x21, 0xa8,
+ 0x8a, 0x7b, 0x98, 0xd9, 0x15, 0xca, 0x15, 0xa8, 0x71, 0x7e, 0x75, 0x1c, 0x5e, 0xdf, 0x14, 0xd1,
+ 0x6d, 0x90, 0xc7, 0x83, 0x41, 0x4f, 0x3d, 0x6c, 0xf7, 0xc6, 0x9d, 0x3d, 0x75, 0xa7, 0xb3, 0x3f,
+ 0x50, 0x3a, 0xea, 0xb8, 0x33, 0x1a, 0x77, 0xfb, 0x07, 0x52, 0x69, 0xe7, 0x10, 0xa8, 0x63, 0x6c,
+ 0x4d, 0x1c, 0x67, 0x62, 0xe1, 0x96, 0x81, 0x2f, 0xe8, 0x22, 0xf9, 0x5c, 0x9b, 0x2d, 0xcb, 0x3c,
+ 0xe1, 0xff, 0x98, 0x5a, 0xb9, 0x56, 0x77, 0xae, 0xcf, 0x62, 0xd8, 0x88, 0x51, 0x86, 0x9e, 0x43,
+ 0x1c, 0xff, 0x64, 0x93, 0x3d, 0x31, 0xfc, 0xe2, 0xcf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x49, 0x2f,
+ 0x5b, 0xda, 0xe3, 0x28, 0x00, 0x00,
+}
diff --git a/go/tools/gopackagesdriver/proto/command_line/BUILD.bazel b/go/tools/gopackagesdriver/proto/command_line/BUILD.bazel
new file mode 100644
index 0000000..cfcfc5d
--- /dev/null
+++ b/go/tools/gopackagesdriver/proto/command_line/BUILD.bazel
@@ -0,0 +1,12 @@
+load("@io_bazel_rules_go//go:def.bzl", "go_library")
+
+go_library(
+ name = "go_default_library",
+ srcs = ["command_line.pb.go"],
+ importpath = "github.com/bazelbuild/rules_go/go/tools/gopackagesdriver/proto/command_line",
+ visibility = ["//visibility:public"],
+ deps = [
+ "//go/tools/gopackagesdriver/proto/option_filters:go_default_library",
+ "@com_github_golang_protobuf//proto:go_default_library",
+ ],
+)
diff --git a/go/tools/gopackagesdriver/proto/command_line/command_line.pb.go b/go/tools/gopackagesdriver/proto/command_line/command_line.pb.go
new file mode 100644
index 0000000..16eed62
--- /dev/null
+++ b/go/tools/gopackagesdriver/proto/command_line/command_line.pb.go
@@ -0,0 +1,391 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: src/main/protobuf/command_line.proto
+
+package command_line
+
+import (
+ fmt "fmt"
+ option_filters "github.com/bazelbuild/rules_go/go/tools/gopackagesdriver/proto/option_filters"
+ proto "github.com/golang/protobuf/proto"
+ math "math"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+
+// Representation of a Bazel command line.
+type CommandLine struct {
+ // A title for this command line value, to differentiate it from others.
+ // In particular, a single invocation may wish to report both the literal and
+ // canonical command lines, and this label would be used to differentiate
+ // between both versions. This is a string for flexibility.
+ CommandLineLabel string `protobuf:"bytes,1,opt,name=command_line_label,json=commandLineLabel,proto3" json:"command_line_label,omitempty"`
+ // A Bazel command line is made of distinct parts. For example,
+ // `bazel --nomaster_bazelrc test --nocache_test_results //foo:aTest`
+ // has the executable "bazel", a startup flag, a command "test", a command
+ // flag, and a test target. There could be many more flags and targets, or
+ // none (`bazel info` for example), but the basic structure is there. The
+ // command line should be broken down into these logical sections here.
+ Sections []*CommandLineSection `protobuf:"bytes,2,rep,name=sections,proto3" json:"sections,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *CommandLine) Reset() { *m = CommandLine{} }
+func (m *CommandLine) String() string { return proto.CompactTextString(m) }
+func (*CommandLine) ProtoMessage() {}
+func (*CommandLine) Descriptor() ([]byte, []int) {
+ return fileDescriptor_a6c030aeb09bb06d, []int{0}
+}
+
+func (m *CommandLine) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_CommandLine.Unmarshal(m, b)
+}
+func (m *CommandLine) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_CommandLine.Marshal(b, m, deterministic)
+}
+func (m *CommandLine) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_CommandLine.Merge(m, src)
+}
+func (m *CommandLine) XXX_Size() int {
+ return xxx_messageInfo_CommandLine.Size(m)
+}
+func (m *CommandLine) XXX_DiscardUnknown() {
+ xxx_messageInfo_CommandLine.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_CommandLine proto.InternalMessageInfo
+
+func (m *CommandLine) GetCommandLineLabel() string {
+ if m != nil {
+ return m.CommandLineLabel
+ }
+ return ""
+}
+
+func (m *CommandLine) GetSections() []*CommandLineSection {
+ if m != nil {
+ return m.Sections
+ }
+ return nil
+}
+
+// A section of the Bazel command line.
+type CommandLineSection struct {
+ // The name of this section, such as "startup_option" or "command".
+ SectionLabel string `protobuf:"bytes,1,opt,name=section_label,json=sectionLabel,proto3" json:"section_label,omitempty"`
+ // Types that are valid to be assigned to SectionType:
+ // *CommandLineSection_ChunkList
+ // *CommandLineSection_OptionList
+ SectionType isCommandLineSection_SectionType `protobuf_oneof:"section_type"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *CommandLineSection) Reset() { *m = CommandLineSection{} }
+func (m *CommandLineSection) String() string { return proto.CompactTextString(m) }
+func (*CommandLineSection) ProtoMessage() {}
+func (*CommandLineSection) Descriptor() ([]byte, []int) {
+ return fileDescriptor_a6c030aeb09bb06d, []int{1}
+}
+
+func (m *CommandLineSection) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_CommandLineSection.Unmarshal(m, b)
+}
+func (m *CommandLineSection) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_CommandLineSection.Marshal(b, m, deterministic)
+}
+func (m *CommandLineSection) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_CommandLineSection.Merge(m, src)
+}
+func (m *CommandLineSection) XXX_Size() int {
+ return xxx_messageInfo_CommandLineSection.Size(m)
+}
+func (m *CommandLineSection) XXX_DiscardUnknown() {
+ xxx_messageInfo_CommandLineSection.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_CommandLineSection proto.InternalMessageInfo
+
+func (m *CommandLineSection) GetSectionLabel() string {
+ if m != nil {
+ return m.SectionLabel
+ }
+ return ""
+}
+
+type isCommandLineSection_SectionType interface {
+ isCommandLineSection_SectionType()
+}
+
+type CommandLineSection_ChunkList struct {
+ ChunkList *ChunkList `protobuf:"bytes,2,opt,name=chunk_list,json=chunkList,proto3,oneof"`
+}
+
+type CommandLineSection_OptionList struct {
+ OptionList *OptionList `protobuf:"bytes,3,opt,name=option_list,json=optionList,proto3,oneof"`
+}
+
+func (*CommandLineSection_ChunkList) isCommandLineSection_SectionType() {}
+
+func (*CommandLineSection_OptionList) isCommandLineSection_SectionType() {}
+
+func (m *CommandLineSection) GetSectionType() isCommandLineSection_SectionType {
+ if m != nil {
+ return m.SectionType
+ }
+ return nil
+}
+
+func (m *CommandLineSection) GetChunkList() *ChunkList {
+ if x, ok := m.GetSectionType().(*CommandLineSection_ChunkList); ok {
+ return x.ChunkList
+ }
+ return nil
+}
+
+func (m *CommandLineSection) GetOptionList() *OptionList {
+ if x, ok := m.GetSectionType().(*CommandLineSection_OptionList); ok {
+ return x.OptionList
+ }
+ return nil
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*CommandLineSection) XXX_OneofWrappers() []interface{} {
+ return []interface{}{
+ (*CommandLineSection_ChunkList)(nil),
+ (*CommandLineSection_OptionList)(nil),
+ }
+}
+
+// Wrapper to allow a list of strings in the "oneof" section_type.
+type ChunkList struct {
+ Chunk []string `protobuf:"bytes,1,rep,name=chunk,proto3" json:"chunk,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *ChunkList) Reset() { *m = ChunkList{} }
+func (m *ChunkList) String() string { return proto.CompactTextString(m) }
+func (*ChunkList) ProtoMessage() {}
+func (*ChunkList) Descriptor() ([]byte, []int) {
+ return fileDescriptor_a6c030aeb09bb06d, []int{2}
+}
+
+func (m *ChunkList) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_ChunkList.Unmarshal(m, b)
+}
+func (m *ChunkList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_ChunkList.Marshal(b, m, deterministic)
+}
+func (m *ChunkList) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_ChunkList.Merge(m, src)
+}
+func (m *ChunkList) XXX_Size() int {
+ return xxx_messageInfo_ChunkList.Size(m)
+}
+func (m *ChunkList) XXX_DiscardUnknown() {
+ xxx_messageInfo_ChunkList.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ChunkList proto.InternalMessageInfo
+
+func (m *ChunkList) GetChunk() []string {
+ if m != nil {
+ return m.Chunk
+ }
+ return nil
+}
+
+// Wrapper to allow a list of options in the "oneof" section_type.
+type OptionList struct {
+ Option []*Option `protobuf:"bytes,1,rep,name=option,proto3" json:"option,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *OptionList) Reset() { *m = OptionList{} }
+func (m *OptionList) String() string { return proto.CompactTextString(m) }
+func (*OptionList) ProtoMessage() {}
+func (*OptionList) Descriptor() ([]byte, []int) {
+ return fileDescriptor_a6c030aeb09bb06d, []int{3}
+}
+
+func (m *OptionList) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_OptionList.Unmarshal(m, b)
+}
+func (m *OptionList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_OptionList.Marshal(b, m, deterministic)
+}
+func (m *OptionList) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OptionList.Merge(m, src)
+}
+func (m *OptionList) XXX_Size() int {
+ return xxx_messageInfo_OptionList.Size(m)
+}
+func (m *OptionList) XXX_DiscardUnknown() {
+ xxx_messageInfo_OptionList.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OptionList proto.InternalMessageInfo
+
+func (m *OptionList) GetOption() []*Option {
+ if m != nil {
+ return m.Option
+ }
+ return nil
+}
+
+// A single command line option.
+//
+// This represents the option itself, but does not take into account the type of
+// option or how the parser interpreted it. If this option is part of a command
+// line that represents the actual input that Bazel received, it would, for
+// example, include expansion flags as they are. However, if this option
+// represents the canonical form of the command line, with the values as Bazel
+// understands them, then the expansion flag, which has no value, would not
+// appear, and the flags it expands to would.
+type Option struct {
+ // How the option looks with the option and its value combined. Depending on
+ // the purpose of this command line report, this could be the canonical
+ // form, or the way that the flag was set.
+ //
+ // Some examples: this might be `--foo=bar` form, or `--foo bar` with a space;
+ // for boolean flags, `--nobaz` is accepted on top of `--baz=false` and other
+ // negating values, or for a positive value, the unqualified `--baz` form
+ // is also accepted. This could also be a short `-b`, if the flag has an
+ // abbreviated form.
+ CombinedForm string `protobuf:"bytes,1,opt,name=combined_form,json=combinedForm,proto3" json:"combined_form,omitempty"`
+ // The canonical name of the option, without the preceding dashes.
+ OptionName string `protobuf:"bytes,2,opt,name=option_name,json=optionName,proto3" json:"option_name,omitempty"`
+ // The value of the flag, or unset for flags that do not take values.
+ // Especially for boolean flags, this should be in canonical form, the
+ // combined_form field above gives room for showing the flag as it was set
+ // if that is preferred.
+ OptionValue string `protobuf:"bytes,3,opt,name=option_value,json=optionValue,proto3" json:"option_value,omitempty"`
+ // This flag's tagged effects. See OptionEffectTag's java documentation for
+ // details.
+ EffectTags []option_filters.OptionEffectTag `protobuf:"varint,4,rep,packed,name=effect_tags,json=effectTags,proto3,enum=options.OptionEffectTag" json:"effect_tags,omitempty"`
+ // Metadata about the flag. See OptionMetadataTag's java documentation for
+ // details.
+ MetadataTags []option_filters.OptionMetadataTag `protobuf:"varint,5,rep,packed,name=metadata_tags,json=metadataTags,proto3,enum=options.OptionMetadataTag" json:"metadata_tags,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *Option) Reset() { *m = Option{} }
+func (m *Option) String() string { return proto.CompactTextString(m) }
+func (*Option) ProtoMessage() {}
+func (*Option) Descriptor() ([]byte, []int) {
+ return fileDescriptor_a6c030aeb09bb06d, []int{4}
+}
+
+func (m *Option) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_Option.Unmarshal(m, b)
+}
+func (m *Option) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_Option.Marshal(b, m, deterministic)
+}
+func (m *Option) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Option.Merge(m, src)
+}
+func (m *Option) XXX_Size() int {
+ return xxx_messageInfo_Option.Size(m)
+}
+func (m *Option) XXX_DiscardUnknown() {
+ xxx_messageInfo_Option.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Option proto.InternalMessageInfo
+
+func (m *Option) GetCombinedForm() string {
+ if m != nil {
+ return m.CombinedForm
+ }
+ return ""
+}
+
+func (m *Option) GetOptionName() string {
+ if m != nil {
+ return m.OptionName
+ }
+ return ""
+}
+
+func (m *Option) GetOptionValue() string {
+ if m != nil {
+ return m.OptionValue
+ }
+ return ""
+}
+
+func (m *Option) GetEffectTags() []option_filters.OptionEffectTag {
+ if m != nil {
+ return m.EffectTags
+ }
+ return nil
+}
+
+func (m *Option) GetMetadataTags() []option_filters.OptionMetadataTag {
+ if m != nil {
+ return m.MetadataTags
+ }
+ return nil
+}
+
+func init() {
+ proto.RegisterType((*CommandLine)(nil), "command_line.CommandLine")
+ proto.RegisterType((*CommandLineSection)(nil), "command_line.CommandLineSection")
+ proto.RegisterType((*ChunkList)(nil), "command_line.ChunkList")
+ proto.RegisterType((*OptionList)(nil), "command_line.OptionList")
+ proto.RegisterType((*Option)(nil), "command_line.Option")
+}
+
+func init() {
+ proto.RegisterFile("src/main/protobuf/command_line.proto", fileDescriptor_a6c030aeb09bb06d)
+}
+
+var fileDescriptor_a6c030aeb09bb06d = []byte{
+ // 432 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x92, 0xdf, 0x6a, 0xd4, 0x40,
+ 0x14, 0xc6, 0x4d, 0xd7, 0x2e, 0xe6, 0x64, 0x5b, 0x64, 0x28, 0x18, 0x7a, 0x63, 0x1a, 0x45, 0x02,
+ 0xd6, 0x59, 0x58, 0x6f, 0xfc, 0x07, 0x42, 0x45, 0xf1, 0x62, 0x55, 0x88, 0xe2, 0x6d, 0x98, 0x4c,
+ 0x26, 0xeb, 0xe0, 0xfc, 0x59, 0x32, 0x93, 0x42, 0xdf, 0xce, 0x17, 0xf2, 0x1d, 0x24, 0x33, 0x93,
+ 0xec, 0x6e, 0xeb, 0x55, 0x72, 0xbe, 0x7c, 0xbf, 0xf3, 0x9d, 0x73, 0x08, 0x3c, 0x35, 0x1d, 0x5d,
+ 0x4a, 0xc2, 0xd5, 0x72, 0xdb, 0x69, 0xab, 0xeb, 0xbe, 0x5d, 0x52, 0x2d, 0x25, 0x51, 0x4d, 0x25,
+ 0xb8, 0x62, 0xd8, 0xa9, 0x68, 0xb1, 0xaf, 0x9d, 0x3f, 0xbb, 0xcb, 0xe8, 0xad, 0xe5, 0x5a, 0x55,
+ 0x2d, 0x17, 0x96, 0x75, 0xc6, 0x53, 0xf9, 0x0d, 0x24, 0x1f, 0x3c, 0xb7, 0xe6, 0x8a, 0xa1, 0x4b,
+ 0x40, 0xfb, 0x6d, 0x2a, 0x41, 0x6a, 0x26, 0xd2, 0x28, 0x8b, 0x8a, 0xb8, 0x7c, 0x48, 0x77, 0xc6,
+ 0xf5, 0xa0, 0xa3, 0x77, 0xf0, 0xc0, 0x30, 0x3a, 0x74, 0x35, 0xe9, 0x51, 0x36, 0x2b, 0x92, 0x55,
+ 0x86, 0x0f, 0x26, 0xdb, 0x6b, 0xfd, 0xdd, 0x1b, 0xcb, 0x89, 0xc8, 0xff, 0x44, 0x80, 0xee, 0x1a,
+ 0xd0, 0x13, 0x38, 0x09, 0x96, 0x83, 0xf4, 0x45, 0x10, 0x7d, 0xf2, 0x2b, 0x00, 0xfa, 0xab, 0x57,
+ 0xbf, 0x2b, 0xc1, 0x8d, 0x4d, 0x8f, 0xb2, 0xa8, 0x48, 0x56, 0x8f, 0x6e, 0x65, 0x0f, 0xdf, 0xd7,
+ 0xdc, 0xd8, 0xcf, 0xf7, 0xca, 0x98, 0x8e, 0x05, 0x7a, 0x0b, 0x49, 0x38, 0x84, 0x43, 0x67, 0x0e,
+ 0x4d, 0x0f, 0xd1, 0x6f, 0xce, 0x10, 0x58, 0xd0, 0x53, 0x75, 0x75, 0x0a, 0xe3, 0x18, 0x95, 0xbd,
+ 0xd9, 0xb2, 0xfc, 0x02, 0xe2, 0x29, 0x06, 0x9d, 0xc1, 0xb1, 0x8b, 0x49, 0xa3, 0x6c, 0x56, 0xc4,
+ 0xa5, 0x2f, 0xf2, 0x37, 0x00, 0xbb, 0x76, 0xe8, 0x12, 0xe6, 0xbe, 0x9d, 0x33, 0x25, 0xab, 0xb3,
+ 0xff, 0x05, 0x97, 0xc1, 0x93, 0xff, 0x8d, 0x60, 0xee, 0xa5, 0xe1, 0x2a, 0x54, 0xcb, 0x9a, 0x2b,
+ 0xd6, 0x54, 0xad, 0xee, 0xe4, 0x78, 0x95, 0x51, 0xfc, 0xa4, 0x3b, 0x89, 0x1e, 0x4f, 0xbb, 0x29,
+ 0x22, 0x99, 0x3b, 0x4b, 0x3c, 0xce, 0xff, 0x95, 0x48, 0x86, 0x2e, 0x60, 0x11, 0x0c, 0xd7, 0x44,
+ 0xf4, 0xcc, 0x6d, 0x1f, 0x97, 0x01, 0xfa, 0x39, 0x48, 0xe8, 0x35, 0x24, 0xac, 0x6d, 0x19, 0xb5,
+ 0x95, 0x25, 0x1b, 0x93, 0xde, 0xcf, 0x66, 0xc5, 0xe9, 0x2a, 0xc5, 0xde, 0x62, 0xc2, 0x84, 0x1f,
+ 0x9d, 0xe3, 0x07, 0xd9, 0x94, 0xc0, 0xc6, 0x57, 0x83, 0xde, 0xc3, 0x89, 0x64, 0x96, 0x34, 0xc4,
+ 0x12, 0x0f, 0x1f, 0x3b, 0xf8, 0xfc, 0x16, 0xfc, 0x25, 0x78, 0x06, 0x7c, 0x21, 0x77, 0x85, 0xb9,
+ 0x7a, 0x01, 0xcf, 0xa9, 0x96, 0x78, 0xa3, 0xf5, 0x46, 0x30, 0xdc, 0xb0, 0x6b, 0xab, 0xb5, 0x30,
+ 0xb8, 0xee, 0xb9, 0x68, 0xb0, 0xe0, 0x35, 0xee, 0x7a, 0x65, 0xb9, 0x0c, 0x7f, 0x7c, 0x3d, 0x77,
+ 0x8f, 0x97, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0xae, 0x90, 0x2a, 0x02, 0x20, 0x03, 0x00, 0x00,
+}
diff --git a/go/tools/gopackagesdriver/proto/genproto.sh b/go/tools/gopackagesdriver/proto/genproto.sh
new file mode 100755
index 0000000..74ff8f4
--- /dev/null
+++ b/go/tools/gopackagesdriver/proto/genproto.sh
@@ -0,0 +1,18 @@
+#!/bin/bash
+
+set -euo pipefail
+cd "$(dirname "$0")"
+M=Msrc/main/protobuf/invocation_policy.proto=github.com/bazelbuild/rules_go/go/tools/gopackagesdriver/proto/invocation_policy
+M=$M,Msrc/main/protobuf/command_line.proto=github.com/bazelbuild/rules_go/go/tools/gopackagesdriver/proto/command_line
+M=$M,Msrc/main/protobuf/option_filters.proto=github.com/bazelbuild/rules_go/go/tools/gopackagesdriver/proto/option_filters
+protos=(
+ build_event_stream.proto
+ src/main/protobuf/invocation_policy.proto
+ src/main/protobuf/command_line.proto
+ src/main/protobuf/option_filters.proto
+)
+
+for proto in "${protos[@]}"; do
+ protoc --go_out="${M}:." "$proto"
+ mv "$(dirname "$proto")/$(basename "$proto" .proto).pb.go" "$(basename "$proto" .proto)"
+done
diff --git a/go/tools/gopackagesdriver/proto/invocation_policy/BUILD.bazel b/go/tools/gopackagesdriver/proto/invocation_policy/BUILD.bazel
new file mode 100644
index 0000000..be15d61
--- /dev/null
+++ b/go/tools/gopackagesdriver/proto/invocation_policy/BUILD.bazel
@@ -0,0 +1,9 @@
+load("@io_bazel_rules_go//go:def.bzl", "go_library")
+
+go_library(
+ name = "go_default_library",
+ srcs = ["invocation_policy.pb.go"],
+ importpath = "github.com/bazelbuild/rules_go/go/tools/gopackagesdriver/proto/invocation_policy",
+ visibility = ["//visibility:public"],
+ deps = ["@com_github_golang_protobuf//proto:go_default_library"],
+)
diff --git a/go/tools/gopackagesdriver/proto/invocation_policy/invocation_policy.pb.go b/go/tools/gopackagesdriver/proto/invocation_policy/invocation_policy.pb.go
new file mode 100644
index 0000000..62b17fd
--- /dev/null
+++ b/go/tools/gopackagesdriver/proto/invocation_policy/invocation_policy.pb.go
@@ -0,0 +1,576 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: src/main/protobuf/invocation_policy.proto
+
+package blaze_invocation_policy
+
+import (
+ fmt "fmt"
+ proto "github.com/golang/protobuf/proto"
+ math "math"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+
+// The --invocation_policy flag takes a base64-encoded binary-serialized or text
+// formatted InvocationPolicy message.
+type InvocationPolicy struct {
+ // Order matters.
+ // After expanding policies on expansion flags or flags with implicit
+ // requirements, only the final policy on a specific flag will be enforced
+ // onto the user's command line.
+ FlagPolicies []*FlagPolicy `protobuf:"bytes,1,rep,name=flag_policies,json=flagPolicies" json:"flag_policies,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *InvocationPolicy) Reset() { *m = InvocationPolicy{} }
+func (m *InvocationPolicy) String() string { return proto.CompactTextString(m) }
+func (*InvocationPolicy) ProtoMessage() {}
+func (*InvocationPolicy) Descriptor() ([]byte, []int) {
+ return fileDescriptor_e130ca0062eb2b66, []int{0}
+}
+
+func (m *InvocationPolicy) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_InvocationPolicy.Unmarshal(m, b)
+}
+func (m *InvocationPolicy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_InvocationPolicy.Marshal(b, m, deterministic)
+}
+func (m *InvocationPolicy) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_InvocationPolicy.Merge(m, src)
+}
+func (m *InvocationPolicy) XXX_Size() int {
+ return xxx_messageInfo_InvocationPolicy.Size(m)
+}
+func (m *InvocationPolicy) XXX_DiscardUnknown() {
+ xxx_messageInfo_InvocationPolicy.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_InvocationPolicy proto.InternalMessageInfo
+
+func (m *InvocationPolicy) GetFlagPolicies() []*FlagPolicy {
+ if m != nil {
+ return m.FlagPolicies
+ }
+ return nil
+}
+
+// A policy for controlling the value of a flag.
+type FlagPolicy struct {
+ // The name of the flag to enforce this policy on.
+ //
+ // Note that this should be the full name of the flag, not the abbreviated
+ // name of the flag. If the user specifies the abbreviated name of a flag,
+ // that flag will be matched using its full name.
+ //
+ // The "no" prefix will not be parsed, so for boolean flags, use
+ // the flag's full name and explicitly set it to true or false.
+ FlagName *string `protobuf:"bytes,1,opt,name=flag_name,json=flagName" json:"flag_name,omitempty"`
+ // If set, this flag policy is applied only if one of the given commands or a
+ // command that inherits from one of the given commands is being run. For
+ // instance, if "build" is one of the commands here, then this policy will
+ // apply to any command that inherits from build, such as info, coverage, or
+ // test. If empty, this flag policy is applied for all commands. This allows
+ // the policy setter to add all policies to the proto without having to
+ // determine which Bazel command the user is actually running. Additionally,
+ // Bazel allows multiple flags to be defined by the same name, and the
+ // specific flag definition is determined by the command.
+ Commands []string `protobuf:"bytes,2,rep,name=commands" json:"commands,omitempty"`
+ // Types that are valid to be assigned to Operation:
+ // *FlagPolicy_SetValue
+ // *FlagPolicy_UseDefault
+ // *FlagPolicy_DisallowValues
+ // *FlagPolicy_AllowValues
+ Operation isFlagPolicy_Operation `protobuf_oneof:"operation"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *FlagPolicy) Reset() { *m = FlagPolicy{} }
+func (m *FlagPolicy) String() string { return proto.CompactTextString(m) }
+func (*FlagPolicy) ProtoMessage() {}
+func (*FlagPolicy) Descriptor() ([]byte, []int) {
+ return fileDescriptor_e130ca0062eb2b66, []int{1}
+}
+
+func (m *FlagPolicy) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_FlagPolicy.Unmarshal(m, b)
+}
+func (m *FlagPolicy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_FlagPolicy.Marshal(b, m, deterministic)
+}
+func (m *FlagPolicy) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_FlagPolicy.Merge(m, src)
+}
+func (m *FlagPolicy) XXX_Size() int {
+ return xxx_messageInfo_FlagPolicy.Size(m)
+}
+func (m *FlagPolicy) XXX_DiscardUnknown() {
+ xxx_messageInfo_FlagPolicy.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_FlagPolicy proto.InternalMessageInfo
+
+func (m *FlagPolicy) GetFlagName() string {
+ if m != nil && m.FlagName != nil {
+ return *m.FlagName
+ }
+ return ""
+}
+
+func (m *FlagPolicy) GetCommands() []string {
+ if m != nil {
+ return m.Commands
+ }
+ return nil
+}
+
+type isFlagPolicy_Operation interface {
+ isFlagPolicy_Operation()
+}
+
+type FlagPolicy_SetValue struct {
+ SetValue *SetValue `protobuf:"bytes,3,opt,name=set_value,json=setValue,oneof"`
+}
+
+type FlagPolicy_UseDefault struct {
+ UseDefault *UseDefault `protobuf:"bytes,4,opt,name=use_default,json=useDefault,oneof"`
+}
+
+type FlagPolicy_DisallowValues struct {
+ DisallowValues *DisallowValues `protobuf:"bytes,5,opt,name=disallow_values,json=disallowValues,oneof"`
+}
+
+type FlagPolicy_AllowValues struct {
+ AllowValues *AllowValues `protobuf:"bytes,6,opt,name=allow_values,json=allowValues,oneof"`
+}
+
+func (*FlagPolicy_SetValue) isFlagPolicy_Operation() {}
+
+func (*FlagPolicy_UseDefault) isFlagPolicy_Operation() {}
+
+func (*FlagPolicy_DisallowValues) isFlagPolicy_Operation() {}
+
+func (*FlagPolicy_AllowValues) isFlagPolicy_Operation() {}
+
+func (m *FlagPolicy) GetOperation() isFlagPolicy_Operation {
+ if m != nil {
+ return m.Operation
+ }
+ return nil
+}
+
+func (m *FlagPolicy) GetSetValue() *SetValue {
+ if x, ok := m.GetOperation().(*FlagPolicy_SetValue); ok {
+ return x.SetValue
+ }
+ return nil
+}
+
+func (m *FlagPolicy) GetUseDefault() *UseDefault {
+ if x, ok := m.GetOperation().(*FlagPolicy_UseDefault); ok {
+ return x.UseDefault
+ }
+ return nil
+}
+
+func (m *FlagPolicy) GetDisallowValues() *DisallowValues {
+ if x, ok := m.GetOperation().(*FlagPolicy_DisallowValues); ok {
+ return x.DisallowValues
+ }
+ return nil
+}
+
+func (m *FlagPolicy) GetAllowValues() *AllowValues {
+ if x, ok := m.GetOperation().(*FlagPolicy_AllowValues); ok {
+ return x.AllowValues
+ }
+ return nil
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*FlagPolicy) XXX_OneofWrappers() []interface{} {
+ return []interface{}{
+ (*FlagPolicy_SetValue)(nil),
+ (*FlagPolicy_UseDefault)(nil),
+ (*FlagPolicy_DisallowValues)(nil),
+ (*FlagPolicy_AllowValues)(nil),
+ }
+}
+
+type SetValue struct {
+ // Use this value for the specified flag, overriding any default or user-set
+ // value (unless append is set to true for repeatable flags).
+ //
+ // This field is repeated for repeatable flags. It is an error to set
+ // multiple values for a flag that is not actually a repeatable flag.
+ // This requires at least 1 value, if even the empty string.
+ //
+ // If the flag allows multiple values, all of its values are replaced with the
+ // value or values from the policy (i.e., no diffing or merging is performed),
+ // unless the append field (see below) is set to true.
+ //
+ // Note that some flags are tricky. For example, some flags look like boolean
+ // flags, but are actually Void expansion flags that expand into other flags.
+ // The Bazel flag parser will accept "--void_flag=false", but because
+ // the flag is Void, the "=false" is ignored. It can get even trickier, like
+ // "--novoid_flag" which is also an expansion flag with the type Void whose
+ // name is explicitly "novoid_flag" and which expands into other flags that
+ // are the opposite of "--void_flag". For expansion flags, it's best to
+ // explicitly override the flags they expand into.
+ //
+ // Other flags may be differently tricky: A flag could have a converter that
+ // converts some string to a list of values, but that flag may not itself have
+ // allowMultiple set to true.
+ //
+ // An example is "--test_tag_filters": this flag sets its converter to
+ // CommaSeparatedOptionListConverter, but does not set allowMultiple to true.
+ // So "--test_tag_filters=foo,bar" results in ["foo", "bar"], however
+ // "--test_tag_filters=foo --test_tag_filters=bar" results in just ["bar"]
+ // since the 2nd value overrides the 1st.
+ //
+ // Similarly, "--test_tag_filters=foo,bar --test_tag_filters=baz,qux" results
+ // in ["baz", "qux"]. For flags like these, the policy should specify
+ // "foo,bar" instead of separately specifying "foo" and "bar" so that the
+ // converter is appropriately invoked.
+ //
+ // Note that the opposite is not necessarily
+ // true: for a flag that specifies allowMultiple=true, "--flag=foo,bar"
+ // may fail to parse or result in an unexpected value.
+ FlagValue []string `protobuf:"bytes,1,rep,name=flag_value,json=flagValue" json:"flag_value,omitempty"`
+ // Whether to allow this policy to be overridden by user-specified values.
+ // When set, if the user specified a value for this flag, use the value
+ // from the user, otherwise use the value specified in this policy.
+ Overridable *bool `protobuf:"varint,2,opt,name=overridable" json:"overridable,omitempty"`
+ // If true, and if the flag named in the policy is a repeatable flag, then
+ // the values listed in flag_value do not replace all the user-set or default
+ // values of the flag, but instead append to them. If the flag is not
+ // repeatable, then this has no effect.
+ Append *bool `protobuf:"varint,3,opt,name=append" json:"append,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *SetValue) Reset() { *m = SetValue{} }
+func (m *SetValue) String() string { return proto.CompactTextString(m) }
+func (*SetValue) ProtoMessage() {}
+func (*SetValue) Descriptor() ([]byte, []int) {
+ return fileDescriptor_e130ca0062eb2b66, []int{2}
+}
+
+func (m *SetValue) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_SetValue.Unmarshal(m, b)
+}
+func (m *SetValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_SetValue.Marshal(b, m, deterministic)
+}
+func (m *SetValue) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_SetValue.Merge(m, src)
+}
+func (m *SetValue) XXX_Size() int {
+ return xxx_messageInfo_SetValue.Size(m)
+}
+func (m *SetValue) XXX_DiscardUnknown() {
+ xxx_messageInfo_SetValue.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_SetValue proto.InternalMessageInfo
+
+func (m *SetValue) GetFlagValue() []string {
+ if m != nil {
+ return m.FlagValue
+ }
+ return nil
+}
+
+func (m *SetValue) GetOverridable() bool {
+ if m != nil && m.Overridable != nil {
+ return *m.Overridable
+ }
+ return false
+}
+
+func (m *SetValue) GetAppend() bool {
+ if m != nil && m.Append != nil {
+ return *m.Append
+ }
+ return false
+}
+
+type UseDefault struct {
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *UseDefault) Reset() { *m = UseDefault{} }
+func (m *UseDefault) String() string { return proto.CompactTextString(m) }
+func (*UseDefault) ProtoMessage() {}
+func (*UseDefault) Descriptor() ([]byte, []int) {
+ return fileDescriptor_e130ca0062eb2b66, []int{3}
+}
+
+func (m *UseDefault) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_UseDefault.Unmarshal(m, b)
+}
+func (m *UseDefault) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_UseDefault.Marshal(b, m, deterministic)
+}
+func (m *UseDefault) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_UseDefault.Merge(m, src)
+}
+func (m *UseDefault) XXX_Size() int {
+ return xxx_messageInfo_UseDefault.Size(m)
+}
+func (m *UseDefault) XXX_DiscardUnknown() {
+ xxx_messageInfo_UseDefault.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_UseDefault proto.InternalMessageInfo
+
+type DisallowValues struct {
+ // It is an error for the user to use any of these values (that is, the Bazel
+ // command will fail), unless new_value or use_default is set.
+ //
+ // For repeatable flags, if any one of the values in the flag matches a value
+ // in the list of disallowed values, an error is thrown.
+ //
+ // Care must be taken for flags with complicated converters. For example,
+ // it's possible for a repeated flag to be of type List<List<T>>, so that
+ // "--foo=a,b --foo=c,d" results in foo=[["a","b"], ["c", "d"]]. In this case,
+ // it is not possible to disallow just "b", nor will ["b", "a"] match, nor
+ // will ["b", "c"] (but ["a", "b"] will still match).
+ DisallowedValues []string `protobuf:"bytes,1,rep,name=disallowed_values,json=disallowedValues" json:"disallowed_values,omitempty"`
+ // Types that are valid to be assigned to ReplacementValue:
+ // *DisallowValues_NewValue
+ // *DisallowValues_UseDefault
+ ReplacementValue isDisallowValues_ReplacementValue `protobuf_oneof:"replacement_value"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *DisallowValues) Reset() { *m = DisallowValues{} }
+func (m *DisallowValues) String() string { return proto.CompactTextString(m) }
+func (*DisallowValues) ProtoMessage() {}
+func (*DisallowValues) Descriptor() ([]byte, []int) {
+ return fileDescriptor_e130ca0062eb2b66, []int{4}
+}
+
+func (m *DisallowValues) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_DisallowValues.Unmarshal(m, b)
+}
+func (m *DisallowValues) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_DisallowValues.Marshal(b, m, deterministic)
+}
+func (m *DisallowValues) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_DisallowValues.Merge(m, src)
+}
+func (m *DisallowValues) XXX_Size() int {
+ return xxx_messageInfo_DisallowValues.Size(m)
+}
+func (m *DisallowValues) XXX_DiscardUnknown() {
+ xxx_messageInfo_DisallowValues.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_DisallowValues proto.InternalMessageInfo
+
+func (m *DisallowValues) GetDisallowedValues() []string {
+ if m != nil {
+ return m.DisallowedValues
+ }
+ return nil
+}
+
+type isDisallowValues_ReplacementValue interface {
+ isDisallowValues_ReplacementValue()
+}
+
+type DisallowValues_NewValue struct {
+ NewValue string `protobuf:"bytes,3,opt,name=new_value,json=newValue,oneof"`
+}
+
+type DisallowValues_UseDefault struct {
+ UseDefault *UseDefault `protobuf:"bytes,4,opt,name=use_default,json=useDefault,oneof"`
+}
+
+func (*DisallowValues_NewValue) isDisallowValues_ReplacementValue() {}
+
+func (*DisallowValues_UseDefault) isDisallowValues_ReplacementValue() {}
+
+func (m *DisallowValues) GetReplacementValue() isDisallowValues_ReplacementValue {
+ if m != nil {
+ return m.ReplacementValue
+ }
+ return nil
+}
+
+func (m *DisallowValues) GetNewValue() string {
+ if x, ok := m.GetReplacementValue().(*DisallowValues_NewValue); ok {
+ return x.NewValue
+ }
+ return ""
+}
+
+func (m *DisallowValues) GetUseDefault() *UseDefault {
+ if x, ok := m.GetReplacementValue().(*DisallowValues_UseDefault); ok {
+ return x.UseDefault
+ }
+ return nil
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*DisallowValues) XXX_OneofWrappers() []interface{} {
+ return []interface{}{
+ (*DisallowValues_NewValue)(nil),
+ (*DisallowValues_UseDefault)(nil),
+ }
+}
+
+type AllowValues struct {
+ // It is an error for the user to use any value not in this list, unless
+ // new_value or use_default is set.
+ AllowedValues []string `protobuf:"bytes,1,rep,name=allowed_values,json=allowedValues" json:"allowed_values,omitempty"`
+ // Types that are valid to be assigned to ReplacementValue:
+ // *AllowValues_NewValue
+ // *AllowValues_UseDefault
+ ReplacementValue isAllowValues_ReplacementValue `protobuf_oneof:"replacement_value"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *AllowValues) Reset() { *m = AllowValues{} }
+func (m *AllowValues) String() string { return proto.CompactTextString(m) }
+func (*AllowValues) ProtoMessage() {}
+func (*AllowValues) Descriptor() ([]byte, []int) {
+ return fileDescriptor_e130ca0062eb2b66, []int{5}
+}
+
+func (m *AllowValues) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_AllowValues.Unmarshal(m, b)
+}
+func (m *AllowValues) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_AllowValues.Marshal(b, m, deterministic)
+}
+func (m *AllowValues) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_AllowValues.Merge(m, src)
+}
+func (m *AllowValues) XXX_Size() int {
+ return xxx_messageInfo_AllowValues.Size(m)
+}
+func (m *AllowValues) XXX_DiscardUnknown() {
+ xxx_messageInfo_AllowValues.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_AllowValues proto.InternalMessageInfo
+
+func (m *AllowValues) GetAllowedValues() []string {
+ if m != nil {
+ return m.AllowedValues
+ }
+ return nil
+}
+
+type isAllowValues_ReplacementValue interface {
+ isAllowValues_ReplacementValue()
+}
+
+type AllowValues_NewValue struct {
+ NewValue string `protobuf:"bytes,3,opt,name=new_value,json=newValue,oneof"`
+}
+
+type AllowValues_UseDefault struct {
+ UseDefault *UseDefault `protobuf:"bytes,4,opt,name=use_default,json=useDefault,oneof"`
+}
+
+func (*AllowValues_NewValue) isAllowValues_ReplacementValue() {}
+
+func (*AllowValues_UseDefault) isAllowValues_ReplacementValue() {}
+
+func (m *AllowValues) GetReplacementValue() isAllowValues_ReplacementValue {
+ if m != nil {
+ return m.ReplacementValue
+ }
+ return nil
+}
+
+func (m *AllowValues) GetNewValue() string {
+ if x, ok := m.GetReplacementValue().(*AllowValues_NewValue); ok {
+ return x.NewValue
+ }
+ return ""
+}
+
+func (m *AllowValues) GetUseDefault() *UseDefault {
+ if x, ok := m.GetReplacementValue().(*AllowValues_UseDefault); ok {
+ return x.UseDefault
+ }
+ return nil
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*AllowValues) XXX_OneofWrappers() []interface{} {
+ return []interface{}{
+ (*AllowValues_NewValue)(nil),
+ (*AllowValues_UseDefault)(nil),
+ }
+}
+
+func init() {
+ proto.RegisterType((*InvocationPolicy)(nil), "blaze.invocation_policy.InvocationPolicy")
+ proto.RegisterType((*FlagPolicy)(nil), "blaze.invocation_policy.FlagPolicy")
+ proto.RegisterType((*SetValue)(nil), "blaze.invocation_policy.SetValue")
+ proto.RegisterType((*UseDefault)(nil), "blaze.invocation_policy.UseDefault")
+ proto.RegisterType((*DisallowValues)(nil), "blaze.invocation_policy.DisallowValues")
+ proto.RegisterType((*AllowValues)(nil), "blaze.invocation_policy.AllowValues")
+}
+
+func init() {
+ proto.RegisterFile("src/main/protobuf/invocation_policy.proto", fileDescriptor_e130ca0062eb2b66)
+}
+
+var fileDescriptor_e130ca0062eb2b66 = []byte{
+ // 463 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x54, 0xd1, 0x8a, 0xd3, 0x40,
+ 0x14, 0x6d, 0xda, 0x75, 0x49, 0x6e, 0xba, 0xb5, 0x3b, 0x82, 0x06, 0x65, 0x21, 0x46, 0xc5, 0xca,
+ 0xe2, 0x14, 0xf6, 0x0b, 0xb4, 0x2c, 0x4b, 0xd7, 0x07, 0x91, 0x88, 0x3e, 0x09, 0x65, 0x92, 0xb9,
+ 0x2d, 0x03, 0x93, 0x99, 0x90, 0x49, 0x5a, 0xf4, 0xc3, 0x7c, 0xf5, 0xc3, 0x7c, 0x91, 0x4e, 0x92,
+ 0x6d, 0x83, 0xe6, 0xcd, 0x87, 0x7d, 0x9b, 0x7b, 0xce, 0xe9, 0xe1, 0xdc, 0x73, 0x4b, 0xe0, 0x8d,
+ 0x29, 0xd2, 0x79, 0xc6, 0x84, 0x9a, 0xe7, 0x85, 0x2e, 0x75, 0x52, 0xad, 0xe7, 0x42, 0x6d, 0x75,
+ 0xca, 0x4a, 0xa1, 0xd5, 0x2a, 0xd7, 0x52, 0xa4, 0xdf, 0xa9, 0xa5, 0xc8, 0x93, 0x44, 0xb2, 0x1f,
+ 0x48, 0xff, 0xa2, 0xa3, 0x6f, 0x30, 0xbd, 0xbd, 0x03, 0x3f, 0x59, 0x8c, 0x2c, 0xe1, 0x6c, 0x2d,
+ 0xd9, 0xa6, 0x96, 0x08, 0x34, 0x81, 0x13, 0x8e, 0x66, 0xfe, 0xd5, 0x0b, 0xda, 0x63, 0x42, 0x6f,
+ 0x24, 0xdb, 0xd4, 0xbf, 0x8d, 0xc7, 0xeb, 0xf6, 0x2d, 0xd0, 0x44, 0xbf, 0x87, 0x00, 0x07, 0x92,
+ 0x3c, 0x03, 0xcf, 0x1a, 0x2b, 0x96, 0x61, 0xe0, 0x84, 0xce, 0xcc, 0x8b, 0xdd, 0x3d, 0xf0, 0x91,
+ 0x65, 0x48, 0x9e, 0x82, 0x9b, 0xea, 0x2c, 0x63, 0x8a, 0x9b, 0x60, 0x18, 0x8e, 0xf6, 0x5c, 0x3b,
+ 0x93, 0x77, 0xe0, 0x19, 0x2c, 0x57, 0x5b, 0x26, 0x2b, 0x0c, 0x46, 0xa1, 0x33, 0xf3, 0xaf, 0x9e,
+ 0xf7, 0xa6, 0xf9, 0x8c, 0xe5, 0xd7, 0xbd, 0x70, 0x39, 0x88, 0x5d, 0xd3, 0xbc, 0xc9, 0x0d, 0xf8,
+ 0x95, 0xc1, 0x15, 0xc7, 0x35, 0xab, 0x64, 0x19, 0x9c, 0x58, 0x8f, 0xfe, 0x8d, 0xbe, 0x18, 0xbc,
+ 0xae, 0xa5, 0xcb, 0x41, 0x0c, 0xd5, 0xdd, 0x44, 0x62, 0x78, 0xc8, 0x85, 0x61, 0x52, 0xea, 0x5d,
+ 0x1d, 0xc7, 0x04, 0x0f, 0xac, 0xd7, 0xeb, 0x5e, 0xaf, 0xeb, 0x46, 0x6f, 0x83, 0x98, 0xe5, 0x20,
+ 0x9e, 0xf0, 0x0e, 0x42, 0x6e, 0x61, 0xdc, 0x31, 0x3c, 0xb5, 0x86, 0x2f, 0x7b, 0x0d, 0xdf, 0x77,
+ 0xdc, 0xfc, 0x23, 0xab, 0x85, 0x0f, 0x9e, 0xce, 0xb1, 0xb0, 0xf2, 0x28, 0x05, 0xb7, 0xed, 0x82,
+ 0x5c, 0x00, 0xd8, 0xea, 0xeb, 0x0a, 0x1d, 0xdb, 0xaf, 0x3d, 0x46, 0x4d, 0x87, 0xe0, 0xeb, 0x2d,
+ 0x16, 0x85, 0xe0, 0x2c, 0x91, 0x18, 0x0c, 0x43, 0x67, 0xe6, 0xc6, 0xc7, 0x10, 0x79, 0x0c, 0xa7,
+ 0x2c, 0xcf, 0x51, 0x71, 0xdb, 0xbf, 0x1b, 0x37, 0x53, 0x34, 0x06, 0x38, 0x94, 0x15, 0xfd, 0x72,
+ 0x60, 0xd2, 0xdd, 0x97, 0x5c, 0xc2, 0x79, 0xbb, 0x2f, 0xf2, 0x76, 0xc5, 0x3a, 0xc0, 0xf4, 0x40,
+ 0x34, 0xe2, 0x0b, 0xf0, 0x14, 0xee, 0x8e, 0x0e, 0xed, 0xed, 0xaf, 0xa8, 0x70, 0xf7, 0x5f, 0xaf,
+ 0xb8, 0x78, 0x04, 0xe7, 0x05, 0xe6, 0x92, 0xa5, 0x98, 0xa1, 0x6a, 0xfe, 0x57, 0x1f, 0x4e, 0xdc,
+ 0xe1, 0x74, 0x14, 0xfd, 0x74, 0xc0, 0x3f, 0x2a, 0x98, 0xbc, 0x82, 0xc9, 0x3f, 0xb3, 0x9f, 0xdd,
+ 0xb3, 0xe0, 0x8b, 0xb7, 0x70, 0x99, 0xea, 0x8c, 0x6e, 0xb4, 0xde, 0x48, 0xa4, 0x1c, 0xb7, 0xa5,
+ 0xd6, 0xd2, 0xd0, 0xa4, 0x12, 0x92, 0x53, 0x29, 0x12, 0x5a, 0x54, 0xaa, 0x14, 0x19, 0xd6, 0x5f,
+ 0x84, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x3e, 0x89, 0xdf, 0xe8, 0x3d, 0x04, 0x00, 0x00,
+}
diff --git a/go/tools/gopackagesdriver/proto/option_filters/BUILD.bazel b/go/tools/gopackagesdriver/proto/option_filters/BUILD.bazel
new file mode 100644
index 0000000..8ab785c
--- /dev/null
+++ b/go/tools/gopackagesdriver/proto/option_filters/BUILD.bazel
@@ -0,0 +1,9 @@
+load("@io_bazel_rules_go//go:def.bzl", "go_library")
+
+go_library(
+ name = "go_default_library",
+ srcs = ["option_filters.pb.go"],
+ importpath = "github.com/bazelbuild/rules_go/go/tools/gopackagesdriver/proto/option_filters",
+ visibility = ["//visibility:public"],
+ deps = ["@com_github_golang_protobuf//proto:go_default_library"],
+)
diff --git a/go/tools/gopackagesdriver/proto/option_filters/option_filters.pb.go b/go/tools/gopackagesdriver/proto/option_filters/option_filters.pb.go
new file mode 100644
index 0000000..4bfbcf8
--- /dev/null
+++ b/go/tools/gopackagesdriver/proto/option_filters/option_filters.pb.go
@@ -0,0 +1,169 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: src/main/protobuf/option_filters.proto
+
+package options
+
+import (
+ fmt "fmt"
+ proto "github.com/golang/protobuf/proto"
+ math "math"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+
+// Docs in java enum.
+type OptionEffectTag int32
+
+const (
+ // This option's effect or intent is unknown.
+ OptionEffectTag_UNKNOWN OptionEffectTag = 0
+ // This flag has literally no effect.
+ OptionEffectTag_NO_OP OptionEffectTag = 1
+ OptionEffectTag_LOSES_INCREMENTAL_STATE OptionEffectTag = 2
+ OptionEffectTag_CHANGES_INPUTS OptionEffectTag = 3
+ OptionEffectTag_AFFECTS_OUTPUTS OptionEffectTag = 4
+ OptionEffectTag_BUILD_FILE_SEMANTICS OptionEffectTag = 5
+ OptionEffectTag_BAZEL_INTERNAL_CONFIGURATION OptionEffectTag = 6
+ OptionEffectTag_LOADING_AND_ANALYSIS OptionEffectTag = 7
+ OptionEffectTag_EXECUTION OptionEffectTag = 8
+ OptionEffectTag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS OptionEffectTag = 9
+ OptionEffectTag_EAGERNESS_TO_EXIT OptionEffectTag = 10
+ OptionEffectTag_BAZEL_MONITORING OptionEffectTag = 11
+ OptionEffectTag_TERMINAL_OUTPUT OptionEffectTag = 12
+ OptionEffectTag_ACTION_COMMAND_LINES OptionEffectTag = 13
+ OptionEffectTag_TEST_RUNNER OptionEffectTag = 14
+)
+
+var OptionEffectTag_name = map[int32]string{
+ 0: "UNKNOWN",
+ 1: "NO_OP",
+ 2: "LOSES_INCREMENTAL_STATE",
+ 3: "CHANGES_INPUTS",
+ 4: "AFFECTS_OUTPUTS",
+ 5: "BUILD_FILE_SEMANTICS",
+ 6: "BAZEL_INTERNAL_CONFIGURATION",
+ 7: "LOADING_AND_ANALYSIS",
+ 8: "EXECUTION",
+ 9: "HOST_MACHINE_RESOURCE_OPTIMIZATIONS",
+ 10: "EAGERNESS_TO_EXIT",
+ 11: "BAZEL_MONITORING",
+ 12: "TERMINAL_OUTPUT",
+ 13: "ACTION_COMMAND_LINES",
+ 14: "TEST_RUNNER",
+}
+
+var OptionEffectTag_value = map[string]int32{
+ "UNKNOWN": 0,
+ "NO_OP": 1,
+ "LOSES_INCREMENTAL_STATE": 2,
+ "CHANGES_INPUTS": 3,
+ "AFFECTS_OUTPUTS": 4,
+ "BUILD_FILE_SEMANTICS": 5,
+ "BAZEL_INTERNAL_CONFIGURATION": 6,
+ "LOADING_AND_ANALYSIS": 7,
+ "EXECUTION": 8,
+ "HOST_MACHINE_RESOURCE_OPTIMIZATIONS": 9,
+ "EAGERNESS_TO_EXIT": 10,
+ "BAZEL_MONITORING": 11,
+ "TERMINAL_OUTPUT": 12,
+ "ACTION_COMMAND_LINES": 13,
+ "TEST_RUNNER": 14,
+}
+
+func (x OptionEffectTag) String() string {
+ return proto.EnumName(OptionEffectTag_name, int32(x))
+}
+
+func (OptionEffectTag) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_e648ce9e05f40d06, []int{0}
+}
+
+// Docs in java enum.
+type OptionMetadataTag int32
+
+const (
+ OptionMetadataTag_EXPERIMENTAL OptionMetadataTag = 0
+ OptionMetadataTag_INCOMPATIBLE_CHANGE OptionMetadataTag = 1
+ OptionMetadataTag_DEPRECATED OptionMetadataTag = 2
+ OptionMetadataTag_HIDDEN OptionMetadataTag = 3
+ OptionMetadataTag_INTERNAL OptionMetadataTag = 4
+ OptionMetadataTag_TRIGGERED_BY_ALL_INCOMPATIBLE_CHANGES OptionMetadataTag = 5
+)
+
+var OptionMetadataTag_name = map[int32]string{
+ 0: "EXPERIMENTAL",
+ 1: "INCOMPATIBLE_CHANGE",
+ 2: "DEPRECATED",
+ 3: "HIDDEN",
+ 4: "INTERNAL",
+ 5: "TRIGGERED_BY_ALL_INCOMPATIBLE_CHANGES",
+}
+
+var OptionMetadataTag_value = map[string]int32{
+ "EXPERIMENTAL": 0,
+ "INCOMPATIBLE_CHANGE": 1,
+ "DEPRECATED": 2,
+ "HIDDEN": 3,
+ "INTERNAL": 4,
+ "TRIGGERED_BY_ALL_INCOMPATIBLE_CHANGES": 5,
+}
+
+func (x OptionMetadataTag) String() string {
+ return proto.EnumName(OptionMetadataTag_name, int32(x))
+}
+
+func (OptionMetadataTag) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_e648ce9e05f40d06, []int{1}
+}
+
+func init() {
+ proto.RegisterEnum("options.OptionEffectTag", OptionEffectTag_name, OptionEffectTag_value)
+ proto.RegisterEnum("options.OptionMetadataTag", OptionMetadataTag_name, OptionMetadataTag_value)
+}
+
+func init() {
+ proto.RegisterFile("src/main/protobuf/option_filters.proto", fileDescriptor_e648ce9e05f40d06)
+}
+
+var fileDescriptor_e648ce9e05f40d06 = []byte{
+ // 472 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x92, 0xcd, 0x6e, 0x1a, 0x31,
+ 0x14, 0x85, 0x13, 0x12, 0x20, 0x5c, 0x08, 0x38, 0x4e, 0xaa, 0x54, 0x6a, 0x17, 0x95, 0xaa, 0xfe,
+ 0xb1, 0x80, 0x45, 0x9f, 0xc0, 0x78, 0x2e, 0x83, 0xd5, 0x99, 0xeb, 0x91, 0xed, 0x51, 0x49, 0x36,
+ 0x16, 0x21, 0x80, 0x90, 0x00, 0x47, 0x30, 0xed, 0x8b, 0xf4, 0x2d, 0xfb, 0x14, 0xd5, 0xcc, 0xb4,
+ 0xab, 0xae, 0x6c, 0x1d, 0xfb, 0x1e, 0x9d, 0xfb, 0xe9, 0xc0, 0xc7, 0xd3, 0x71, 0x39, 0xde, 0x2f,
+ 0xb6, 0x87, 0xf1, 0xcb, 0x31, 0x14, 0xe1, 0xe9, 0xc7, 0x7a, 0x1c, 0x5e, 0x8a, 0x6d, 0x38, 0xf8,
+ 0xf5, 0x76, 0x57, 0xac, 0x8e, 0xa7, 0x51, 0xa5, 0xf3, 0x76, 0xad, 0x9e, 0x86, 0xbf, 0x1b, 0x30,
+ 0xd0, 0xd5, 0x1d, 0xd7, 0xeb, 0xd5, 0xb2, 0x70, 0x8b, 0x0d, 0xef, 0x42, 0x3b, 0xa7, 0x6f, 0xa4,
+ 0xbf, 0x13, 0x3b, 0xe3, 0x1d, 0x68, 0x92, 0xf6, 0x3a, 0x63, 0xe7, 0xfc, 0x0d, 0xdc, 0x27, 0xda,
+ 0xa2, 0xf5, 0x8a, 0xa4, 0xc1, 0x14, 0xc9, 0x89, 0xc4, 0x5b, 0x27, 0x1c, 0xb2, 0x06, 0xe7, 0xd0,
+ 0x97, 0x33, 0x41, 0x71, 0xf5, 0x9c, 0xe5, 0xce, 0xb2, 0x0b, 0x7e, 0x0b, 0x03, 0x31, 0x9d, 0xa2,
+ 0x74, 0xd6, 0xeb, 0xdc, 0x55, 0xe2, 0x25, 0x7f, 0x0d, 0x77, 0x93, 0x5c, 0x25, 0x91, 0x9f, 0xaa,
+ 0x04, 0xbd, 0xc5, 0x54, 0x90, 0x53, 0xd2, 0xb2, 0x26, 0x7f, 0x07, 0x6f, 0x27, 0xe2, 0x11, 0x13,
+ 0xaf, 0xc8, 0xa1, 0x21, 0x91, 0x78, 0xa9, 0x69, 0xaa, 0xe2, 0xdc, 0x08, 0xa7, 0x34, 0xb1, 0x56,
+ 0x39, 0x9b, 0x68, 0x11, 0x29, 0x8a, 0xbd, 0xa0, 0xc8, 0x0b, 0x12, 0xc9, 0x83, 0x55, 0x96, 0xb5,
+ 0xf9, 0x35, 0x74, 0x70, 0x8e, 0x32, 0xaf, 0x3e, 0x5e, 0xf1, 0x4f, 0xf0, 0x7e, 0xa6, 0xad, 0xf3,
+ 0xa9, 0x90, 0x33, 0x45, 0xe8, 0x0d, 0x5a, 0x9d, 0x1b, 0x89, 0x5e, 0x67, 0x4e, 0xa5, 0xea, 0xb1,
+ 0x32, 0xb4, 0xac, 0xc3, 0x5f, 0xc1, 0x0d, 0x8a, 0x18, 0x0d, 0xa1, 0xb5, 0xde, 0x69, 0x8f, 0x73,
+ 0xe5, 0x18, 0xf0, 0x3b, 0x60, 0x75, 0x94, 0x54, 0x93, 0x72, 0xda, 0x28, 0x8a, 0x59, 0xb7, 0xdc,
+ 0xc7, 0xa1, 0x49, 0x55, 0x19, 0xad, 0x5e, 0x88, 0xf5, 0xca, 0x4c, 0x42, 0x96, 0x76, 0x5e, 0xea,
+ 0x34, 0x2d, 0x63, 0x25, 0x8a, 0xd0, 0xb2, 0x6b, 0x3e, 0x80, 0xae, 0x43, 0xeb, 0xbc, 0xc9, 0x89,
+ 0xd0, 0xb0, 0xfe, 0xf0, 0xd7, 0x39, 0xdc, 0xd4, 0xb0, 0xd3, 0x55, 0xb1, 0x78, 0x5e, 0x14, 0x8b,
+ 0x12, 0x37, 0x83, 0x1e, 0xce, 0x33, 0x34, 0xaa, 0x26, 0xca, 0xce, 0xf8, 0x3d, 0xdc, 0x2a, 0x92,
+ 0x3a, 0xcd, 0x84, 0x53, 0x93, 0x04, 0x7d, 0x0d, 0x96, 0x9d, 0xf3, 0x3e, 0x40, 0x84, 0x99, 0x41,
+ 0x29, 0x1c, 0x46, 0xac, 0xc1, 0x01, 0x5a, 0x33, 0x15, 0x45, 0x48, 0xec, 0x82, 0xf7, 0xe0, 0xea,
+ 0x1f, 0x37, 0x76, 0xc9, 0xbf, 0xc0, 0x07, 0x67, 0x54, 0x1c, 0xa3, 0xc1, 0xc8, 0x4f, 0x1e, 0xbc,
+ 0x48, 0x4a, 0xac, 0xff, 0x79, 0x5a, 0xd6, 0x9c, 0x0c, 0xe1, 0xf3, 0x32, 0xec, 0x47, 0x9b, 0x10,
+ 0x36, 0xbb, 0xd5, 0xe8, 0x79, 0xf5, 0xb3, 0x08, 0x61, 0x77, 0x1a, 0x2d, 0xc3, 0x7e, 0x1f, 0x0e,
+ 0xa3, 0xbf, 0x45, 0xa9, 0x7b, 0xf3, 0xd4, 0xaa, 0x8e, 0xaf, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff,
+ 0x08, 0x59, 0xf7, 0x7f, 0x68, 0x02, 0x00, 0x00,
+}
diff --git a/go/tools/gopackagesdriver/proto/src/main/protobuf/command_line.proto b/go/tools/gopackagesdriver/proto/src/main/protobuf/command_line.proto
new file mode 100644
index 0000000..d5fa6ac
--- /dev/null
+++ b/go/tools/gopackagesdriver/proto/src/main/protobuf/command_line.proto
@@ -0,0 +1,102 @@
+// Copyright 2017 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+package command_line;
+
+// option java_api_version = 2;
+option java_package = "com.google.devtools.build.lib.runtime.proto";
+
+import "src/main/protobuf/option_filters.proto";
+
+// Representation of a Bazel command line.
+message CommandLine {
+ // A title for this command line value, to differentiate it from others.
+ // In particular, a single invocation may wish to report both the literal and
+ // canonical command lines, and this label would be used to differentiate
+ // between both versions. This is a string for flexibility.
+ string command_line_label = 1;
+
+ // A Bazel command line is made of distinct parts. For example,
+ // `bazel --nomaster_bazelrc test --nocache_test_results //foo:aTest`
+ // has the executable "bazel", a startup flag, a command "test", a command
+ // flag, and a test target. There could be many more flags and targets, or
+ // none (`bazel info` for example), but the basic structure is there. The
+ // command line should be broken down into these logical sections here.
+ repeated CommandLineSection sections = 2;
+}
+
+// A section of the Bazel command line.
+message CommandLineSection {
+ // The name of this section, such as "startup_option" or "command".
+ string section_label = 1;
+
+ oneof section_type {
+ // Sections with non-options, such as the list of targets or the command,
+ // should use simple string chunks.
+ ChunkList chunk_list = 2;
+
+ // Startup and command options are lists of options and belong here.
+ OptionList option_list = 3;
+ }
+}
+
+// Wrapper to allow a list of strings in the "oneof" section_type.
+message ChunkList {
+ repeated string chunk = 1;
+}
+
+// Wrapper to allow a list of options in the "oneof" section_type.
+message OptionList {
+ repeated Option option = 1;
+}
+
+// A single command line option.
+//
+// This represents the option itself, but does not take into account the type of
+// option or how the parser interpreted it. If this option is part of a command
+// line that represents the actual input that Bazel received, it would, for
+// example, include expansion flags as they are. However, if this option
+// represents the canonical form of the command line, with the values as Bazel
+// understands them, then the expansion flag, which has no value, would not
+// appear, and the flags it expands to would.
+message Option {
+ // How the option looks with the option and its value combined. Depending on
+ // the purpose of this command line report, this could be the canonical
+ // form, or the way that the flag was set.
+ //
+ // Some examples: this might be `--foo=bar` form, or `--foo bar` with a space;
+ // for boolean flags, `--nobaz` is accepted on top of `--baz=false` and other
+ // negating values, or for a positive value, the unqualified `--baz` form
+ // is also accepted. This could also be a short `-b`, if the flag has an
+ // abbreviated form.
+ string combined_form = 1;
+
+ // The canonical name of the option, without the preceding dashes.
+ string option_name = 2;
+
+ // The value of the flag, or unset for flags that do not take values.
+ // Especially for boolean flags, this should be in canonical form, the
+ // combined_form field above gives room for showing the flag as it was set
+ // if that is preferred.
+ string option_value = 3;
+
+ // This flag's tagged effects. See OptionEffectTag's java documentation for
+ // details.
+ repeated options.OptionEffectTag effect_tags = 4;
+
+ // Metadata about the flag. See OptionMetadataTag's java documentation for
+ // details.
+ repeated options.OptionMetadataTag metadata_tags = 5;
+}
diff --git a/go/tools/gopackagesdriver/proto/src/main/protobuf/invocation_policy.proto b/go/tools/gopackagesdriver/proto/src/main/protobuf/invocation_policy.proto
new file mode 100644
index 0000000..53572ac
--- /dev/null
+++ b/go/tools/gopackagesdriver/proto/src/main/protobuf/invocation_policy.proto
@@ -0,0 +1,190 @@
+// Copyright 2015 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto2";
+package blaze.invocation_policy;
+
+// option java_api_version = 2;
+option java_package = "com.google.devtools.build.lib.runtime.proto";
+
+// The --invocation_policy flag takes a base64-encoded binary-serialized or text
+// formatted InvocationPolicy message.
+message InvocationPolicy {
+ // Order matters.
+ // After expanding policies on expansion flags or flags with implicit
+ // requirements, only the final policy on a specific flag will be enforced
+ // onto the user's command line.
+ repeated FlagPolicy flag_policies = 1;
+}
+
+// A policy for controlling the value of a flag.
+message FlagPolicy {
+ // The name of the flag to enforce this policy on.
+ //
+ // Note that this should be the full name of the flag, not the abbreviated
+ // name of the flag. If the user specifies the abbreviated name of a flag,
+ // that flag will be matched using its full name.
+ //
+ // The "no" prefix will not be parsed, so for boolean flags, use
+ // the flag's full name and explicitly set it to true or false.
+ optional string flag_name = 1;
+
+ // If set, this flag policy is applied only if one of the given commands or a
+ // command that inherits from one of the given commands is being run. For
+ // instance, if "build" is one of the commands here, then this policy will
+ // apply to any command that inherits from build, such as info, coverage, or
+ // test. If empty, this flag policy is applied for all commands. This allows
+ // the policy setter to add all policies to the proto without having to
+ // determine which Bazel command the user is actually running. Additionally,
+ // Bazel allows multiple flags to be defined by the same name, and the
+ // specific flag definition is determined by the command.
+ repeated string commands = 2;
+
+ oneof operation {
+ SetValue set_value = 3;
+ UseDefault use_default = 4;
+ DisallowValues disallow_values = 5;
+ AllowValues allow_values = 6;
+ }
+}
+
+message SetValue {
+ // Use this value for the specified flag, overriding any default or user-set
+ // value (unless append is set to true for repeatable flags).
+ //
+ // This field is repeated for repeatable flags. It is an error to set
+ // multiple values for a flag that is not actually a repeatable flag.
+ // This requires at least 1 value, if even the empty string.
+ //
+ // If the flag allows multiple values, all of its values are replaced with the
+ // value or values from the policy (i.e., no diffing or merging is performed),
+ // unless the append field (see below) is set to true.
+ //
+ // Note that some flags are tricky. For example, some flags look like boolean
+ // flags, but are actually Void expansion flags that expand into other flags.
+ // The Bazel flag parser will accept "--void_flag=false", but because
+ // the flag is Void, the "=false" is ignored. It can get even trickier, like
+ // "--novoid_flag" which is also an expansion flag with the type Void whose
+ // name is explicitly "novoid_flag" and which expands into other flags that
+ // are the opposite of "--void_flag". For expansion flags, it's best to
+ // explicitly override the flags they expand into.
+ //
+ // Other flags may be differently tricky: A flag could have a converter that
+ // converts some string to a list of values, but that flag may not itself have
+ // allowMultiple set to true.
+ //
+ // An example is "--test_tag_filters": this flag sets its converter to
+ // CommaSeparatedOptionListConverter, but does not set allowMultiple to true.
+ // So "--test_tag_filters=foo,bar" results in ["foo", "bar"], however
+ // "--test_tag_filters=foo --test_tag_filters=bar" results in just ["bar"]
+ // since the 2nd value overrides the 1st.
+ //
+ // Similarly, "--test_tag_filters=foo,bar --test_tag_filters=baz,qux" results
+ // in ["baz", "qux"]. For flags like these, the policy should specify
+ // "foo,bar" instead of separately specifying "foo" and "bar" so that the
+ // converter is appropriately invoked.
+ //
+ // Note that the opposite is not necessarily
+ // true: for a flag that specifies allowMultiple=true, "--flag=foo,bar"
+ // may fail to parse or result in an unexpected value.
+ repeated string flag_value = 1;
+
+ // Whether to allow this policy to be overridden by user-specified values.
+ // When set, if the user specified a value for this flag, use the value
+ // from the user, otherwise use the value specified in this policy.
+ optional bool overridable = 2;
+
+ // If true, and if the flag named in the policy is a repeatable flag, then
+ // the values listed in flag_value do not replace all the user-set or default
+ // values of the flag, but instead append to them. If the flag is not
+ // repeatable, then this has no effect.
+ optional bool append = 3;
+}
+
+message UseDefault {
+ // Use the default value of the flag, as defined by Bazel (or equivalently, do
+ // not allow the user to set this flag).
+ //
+ // Note on implementation: UseDefault sets the default by clearing the flag,
+ // so that when the value is requested and no flag is found, the flag parser
+ // returns the default. This is mostly relevant for expansion flags: it will
+ // erase user values in *all* flags that the expansion flag expands to. Only
+ // use this on expansion flags if this is acceptable behavior. Since the last
+ // policy wins, later policies on this same flag will still remove the
+ // expanded UseDefault, so there is a way around, but it's really best not to
+ // use this on expansion flags at all.
+}
+
+message DisallowValues {
+ // Obsolete new_default_value field.
+ reserved 2;
+
+ // It is an error for the user to use any of these values (that is, the Bazel
+ // command will fail), unless new_value or use_default is set.
+ //
+ // For repeatable flags, if any one of the values in the flag matches a value
+ // in the list of disallowed values, an error is thrown.
+ //
+ // Care must be taken for flags with complicated converters. For example,
+ // it's possible for a repeated flag to be of type List<List<T>>, so that
+ // "--foo=a,b --foo=c,d" results in foo=[["a","b"], ["c", "d"]]. In this case,
+ // it is not possible to disallow just "b", nor will ["b", "a"] match, nor
+ // will ["b", "c"] (but ["a", "b"] will still match).
+ repeated string disallowed_values = 1;
+
+ oneof replacement_value {
+ // If set and if the value of the flag is disallowed (including the default
+ // value of the flag if the user doesn't specify a value), use this value as
+ // the value of the flag instead of raising an error. This does not apply to
+ // repeatable flags and is ignored if the flag is a repeatable flag.
+ string new_value = 3;
+
+ // If set and if the value of the flag is disallowed, use the default value
+ // of the flag instead of raising an error. Unlike new_value, this works for
+ // repeatable flags, but note that the default value for repeatable flags is
+ // always empty.
+ //
+ // Note that it is an error to disallow the default value of the flag and
+ // to set use_default, unless the flag is a repeatable flag where the
+ // default value is always the empty list.
+ UseDefault use_default = 4;
+ }
+}
+
+message AllowValues {
+ // Obsolete new_default_value field.
+ reserved 2;
+
+ // It is an error for the user to use any value not in this list, unless
+ // new_value or use_default is set.
+ repeated string allowed_values = 1;
+
+ oneof replacement_value {
+ // If set and if the value of the flag is disallowed (including the default
+ // value of the flag if the user doesn't specify a value), use this value as
+ // the value of the flag instead of raising an error. This does not apply to
+ // repeatable flags and is ignored if the flag is a repeatable flag.
+ string new_value = 3;
+
+ // If set and if the value of the flag is disallowed, use the default value
+ // of the flag instead of raising an error. Unlike new_value, this works for
+ // repeatable flags, but note that the default value for repeatable flags is
+ // always empty.
+ //
+ // Note that it is an error to disallow the default value of the flag and
+ // to set use_default, unless the flag is a repeatable flag where the
+ // default value is always the empty list.
+ UseDefault use_default = 4;
+ }
+}
diff --git a/go/tools/gopackagesdriver/proto/src/main/protobuf/option_filters.proto b/go/tools/gopackagesdriver/proto/src/main/protobuf/option_filters.proto
new file mode 100644
index 0000000..782620d
--- /dev/null
+++ b/go/tools/gopackagesdriver/proto/src/main/protobuf/option_filters.proto
@@ -0,0 +1,56 @@
+// Copyright 2017 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+syntax = "proto3";
+package options;
+
+// option java_api_version = 2;
+option java_package = "com.google.devtools.common.options.proto";
+
+// IMPORTANT NOTE: These two enums must be kept in sync with their Java
+// equivalents in src/main/java/com/google/devtools/common/options.
+// Changing this proto has specific compatibility requirements, please see the
+// Java documentation for details.
+
+// Docs in java enum.
+enum OptionEffectTag {
+ // This option's effect or intent is unknown.
+ UNKNOWN = 0;
+
+ // This flag has literally no effect.
+ NO_OP = 1;
+
+ LOSES_INCREMENTAL_STATE = 2;
+ CHANGES_INPUTS = 3;
+ AFFECTS_OUTPUTS = 4;
+ BUILD_FILE_SEMANTICS = 5;
+ BAZEL_INTERNAL_CONFIGURATION = 6;
+ LOADING_AND_ANALYSIS = 7;
+ EXECUTION = 8;
+ HOST_MACHINE_RESOURCE_OPTIMIZATIONS = 9;
+ EAGERNESS_TO_EXIT = 10;
+ BAZEL_MONITORING = 11;
+ TERMINAL_OUTPUT = 12;
+ ACTION_COMMAND_LINES = 13;
+ TEST_RUNNER = 14;
+}
+
+// Docs in java enum.
+enum OptionMetadataTag {
+ EXPERIMENTAL = 0;
+ INCOMPATIBLE_CHANGE = 1;
+ DEPRECATED = 2;
+ HIDDEN = 3;
+ INTERNAL = 4;
+ TRIGGERED_BY_ALL_INCOMPATIBLE_CHANGES = 5;
+}