|  | // 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; | 
|  | } |