blob: 8d344fa52502fb906bc66ada899b468f82e9d279 [file] [log] [blame]
// Copyright 2014 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 skydoc;
// internal options
message Attribute {
// Indicates the type of attribute.
enum Discriminator {
INTEGER = 1; // int_value
STRING = 2; // string_value
LABEL = 3; // string_value
OUTPUT = 4; // string_value
STRING_LIST = 5; // string_list_value
LABEL_LIST = 6; // string_list_value
OUTPUT_LIST = 7; // string_list_value
DISTRIBUTION_SET = 8; // string_list_value - order is unimportant
LICENSE = 9; // license
STRING_DICT = 10; // string_dict_value
FILESET_ENTRY_LIST = 11; // fileset_list_value
LABEL_LIST_DICT = 12; // label_list_dict_value
STRING_LIST_DICT = 13; // string_list_dict_value
BOOLEAN = 14; // int, bool and string value
TRISTATE = 15; // tristate, int and string value
INTEGER_LIST = 16; // int_list_value
UNKNOWN = 18; // unknown type, use only for build extensions
LABEL_DICT_UNARY = 19; // label_dict_unary_value
SELECTOR_LIST = 20; // selector_list
NAME = 21; // name, use only for the name attribute
LABEL_KEYED_STRING_DICT = 22; // label_keyed_string_dict
// Deprecated.
DEPRECATED_STRING_DICT_UNARY = 17;
}
}
// Information about allowed rule classes for a specific attribute of a rule.
message AllowedRuleClassInfo {
enum AllowedRuleClasses {
ANY = 1; // Any rule is allowed to be in this attribute
SPECIFIED = 2; // Only the explicitly listed rules are allowed
}
required AllowedRuleClasses policy = 1;
// Rule class names of rules allowed in this attribute, e.g "cc_library",
// "py_binary". Only present if the allowed_rule_classes field is set to
// SPECIFIED.
repeated string allowed_rule_class = 2;
}
// Information about an output target for a rule.
message OutputTarget {
// The template name of the output target (e.g. %{name}.jar.
optional string template = 1;
// The documentation for the output target.
optional string documentation = 2;
}
// This message represents a single attribute of a single rule.
message AttributeDefinition {
// Rule name, e.g. "cc_library"
required string name = 1;
required Attribute.Discriminator type = 2;
required bool mandatory = 3;
// Only present for attributes of type LABEL and LABEL_LIST.
optional AllowedRuleClassInfo allowed_rule_classes = 4;
// The documentation for the attribute.
optional string documentation = 5;
// The string representation of the default value of the attribute.
optional string default = 6;
}
message RuleDefinition {
required string name = 1;
// Only contains documented attributes
repeated AttributeDefinition attribute = 2;
// The documentation for the rule.
optional string documentation = 3;
// Documentation illustrating example usages of the rule.
optional string example_documentation = 4;
// The list of outputs for this rule.
repeated OutputTarget output = 5;
enum Type {
RULE = 1;
MACRO = 2;
REPOSITORY_RULE = 3;
}
optional Type type = 6;
}
message BuildLanguage {
// Only contains documented rule definitions
repeated RuleDefinition rule = 1;
}