kythe.io@v0.0.68-0.20240422202219-7225dbc01741/third_party/bazel/src/main/protobuf/command_line.proto (about) 1 // Copyright 2017 The Bazel Authors. All rights reserved. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 syntax = "proto3"; 16 package command_line; 17 18 // option java_api_version = 2; 19 option java_package = "com.google.devtools.build.lib.runtime.proto"; 20 21 import "third_party/bazel/src/main/protobuf/option_filters.proto"; 22 23 // Representation of a Bazel command line. 24 message CommandLine { 25 // A title for this command line value, to differentiate it from others. 26 // In particular, a single invocation may wish to report both the literal and 27 // canonical command lines, and this label would be used to differentiate 28 // between both versions. This is a string for flexibility. 29 string command_line_label = 1; 30 31 // A Bazel command line is made of distinct parts. For example, 32 // `bazel --nomaster_bazelrc test --nocache_test_results //foo:aTest` 33 // has the executable "bazel", a startup flag, a command "test", a command 34 // flag, and a test target. There could be many more flags and targets, or 35 // none (`bazel info` for example), but the basic structure is there. The 36 // command line should be broken down into these logical sections here. 37 repeated CommandLineSection sections = 2; 38 } 39 40 // A section of the Bazel command line. 41 message CommandLineSection { 42 // The name of this section, such as "startup_option" or "command". 43 string section_label = 1; 44 45 oneof section_type { 46 // Sections with non-options, such as the list of targets or the command, 47 // should use simple string chunks. 48 ChunkList chunk_list = 2; 49 50 // Startup and command options are lists of options and belong here. 51 OptionList option_list = 3; 52 } 53 } 54 55 // Wrapper to allow a list of strings in the "oneof" section_type. 56 message ChunkList { 57 repeated string chunk = 1; 58 } 59 60 // Wrapper to allow a list of options in the "oneof" section_type. 61 message OptionList { 62 repeated Option option = 1; 63 } 64 65 // A single command line option. 66 // 67 // This represents the option itself, but does not take into account the type of 68 // option or how the parser interpreted it. If this option is part of a command 69 // line that represents the actual input that Bazel received, it would, for 70 // example, include expansion flags as they are. However, if this option 71 // represents the canonical form of the command line, with the values as Bazel 72 // understands them, then the expansion flag, which has no value, would not 73 // appear, and the flags it expands to would. 74 message Option { 75 // How the option looks with the option and its value combined. Depending on 76 // the purpose of this command line report, this could be the canonical 77 // form, or the way that the flag was set. 78 // 79 // Some examples: this might be `--foo=bar` form, or `--foo bar` with a space; 80 // for boolean flags, `--nobaz` is accepted on top of `--baz=false` and other 81 // negating values, or for a positive value, the unqualified `--baz` form 82 // is also accepted. This could also be a short `-b`, if the flag has an 83 // abbreviated form. 84 string combined_form = 1; 85 86 // The canonical name of the option, without the preceding dashes. 87 string option_name = 2; 88 89 // The value of the flag, or unset for flags that do not take values. 90 // Especially for boolean flags, this should be in canonical form, the 91 // combined_form field above gives room for showing the flag as it was set 92 // if that is preferred. 93 string option_value = 3; 94 95 // This flag's tagged effects. See OptionEffectTag's java documentation for 96 // details. 97 repeated options.OptionEffectTag effect_tags = 4; 98 99 // Metadata about the flag. See OptionMetadataTag's java documentation for 100 // details. 101 repeated options.OptionMetadataTag metadata_tags = 5; 102 }