...

Package tables

import "github.com/bazelbuild/buildtools/tables"
Overview
Index

Overview ▾

Variables

AndroidLoadPath is the load path for the Starlark Android Rules.

var AndroidLoadPath = "@rules_android//android:rules.bzl"

AndroidNativeRules lists all Android rules that are being migrated from Native to Starlark.

var AndroidNativeRules = []string{
    "aar_import",
    "android_binary",
    "android_device",
    "android_instrumentation_test",
    "android_library",
    "android_local_test",
    "android_ndk_respository",
    "android_sdk_repository",
}

CcLoadPath is the load path for the Starlark C++ Rules.

var CcLoadPath = "@rules_cc//cc:defs.bzl"

CcNativeRules lists all C++ rules that are being migrated from Native to Starlark.

var CcNativeRules = []string{
    "cc_binary",
    "cc_test",
    "cc_library",
    "cc_import",
    "cc_proto_library",
    "fdo_prefetch_hints",
    "fdo_profile",
    "cc_toolchain",
    "cc_toolchain_suite",
    "objc_library",
    "objc_import",
}

IsLabelArg contains a list of named arguments to a rule call that are considered to have a value that can be treated as a label or list of labels. There is a separate denylist for rule-specific exceptions.

var IsLabelArg = map[string]bool{
    "app_target":          true,
    "appdir":              true,
    "base_package":        true,
    "build_deps":          true,
    "cc_deps":             true,
    "ccdeps":              true,
    "common_deps":         true,
    "compile_deps":        true,
    "compiler":            true,
    "data":                true,
    "default_visibility":  true,
    "dep":                 true,
    "deps":                true,
    "deps_java":           true,
    "dont_depend_on":      true,
    "env_deps":            true,
    "envscripts":          true,
    "exported_deps":       true,
    "exports":             true,
    "externs_list":        true,
    "files":               true,
    "globals":             true,
    "implementation":      true,
    "implementation_deps": true,
    "implements":          true,
    "includes":            true,
    "interface":           true,
    "jar":                 true,
    "jars":                true,
    "javadeps":            true,
    "lib_deps":            true,
    "library":             true,
    "malloc":              true,
    "model":               true,
    "mods":                true,
    "module_deps":         true,
    "module_target":       true,
    "of":                  true,
    "plugins":             true,
    "private_deps":        true,
    "proto_deps":          true,
    "proto_target":        true,
    "protos":              true,
    "resource":            true,
    "resources":           true,
    "runtime_deps":        true,
    "scope":               true,
    "shared_deps":         true,
    "similar_deps":        true,
    "source_jar":          true,
    "src":                 true,
    "srcs":                true,
    "stripped_targets":    true,
    "suites":              true,
    "swigdeps":            true,
    "target":              true,
    "target_devices":      true,
    "target_platforms":    true,
    "template":            true,
    "test":                true,
    "test_data":           true,
    "test_deps":           true,
    "test_srcs":           true,
    "tests":               true,
    "tests_deps":          true,
    "tool":                true,
    "tools":               true,
    "visibility":          true,
}

By default, edit.types.IsList consults lang.TypeOf to determine if an arg is a list. You may override this using IsListArg. Specifying a name here overrides any value in lang.TypeOf.

var IsListArg = map[string]bool{}

IsModuleOverride contains the names of all Bzlmod module overrides available in MODULE.bazel.

var IsModuleOverride = map[string]bool{
    "archive_override":          true,
    "git_override":              true,
    "local_path_override":       true,
    "multiple_version_override": true,
    "single_version_override":   true,
}

IsSortableListArg contains a list of named arguments to a rule call that are considered to be a sortable list . There is a separate denylist for rule-specific exceptions.

var IsSortableListArg = map[string]bool{
    "cc_deps":             true,
    "common_deps":         true,
    "compile_deps":        true,
    "configs":             true,
    "constraints":         true,
    "data":                true,
    "default_visibility":  true,
    "deps":                true,
    "deps_java":           true,
    "exported_deps":       true,
    "exports":             true,
    "filegroups":          true,
    "files":               true,
    "hdrs":                true,
    "implementation_deps": true,
    "imports":             true,
    "includes":            true,
    "inherits":            true,
    "javadeps":            true,
    "lib_deps":            true,
    "module_deps":         true,
    "out":                 true,
    "outs":                true,
    "packages":            true,
    "plugin_modules":      true,
    "private_deps":        true,
    "proto_deps":          true,
    "protos":              true,
    "pubs":                true,
    "resources":           true,
    "runtime_deps":        true,
    "shared_deps":         true,
    "similar_deps":        true,
    "srcs":                true,
    "swigdeps":            true,
    "swig_includes":       true,
    "tags":                true,
    "test_data":           true,
    "test_deps":           true,
    "test_srcs":           true,
    "test_tags":           true,
    "tests":               true,
    "tools":               true,
    "to_start_extensions": true,
    "visibility":          true,
}

JavaLoadPath is the load path for the Starlark Java Rules.

var JavaLoadPath = "@rules_java//java:defs.bzl"

JavaNativeRules lists all Java rules that are being migrated from Native to Starlark.

var JavaNativeRules = []string{
    "java_binary",
    "java_import",
    "java_library",
    "java_lite_proto_library",
    "java_proto_library",
    "java_test",
    "java_package_configuration",
    "java_plugin",
    "java_runtime",
    "java_toolchain",
}

LabelDenylist is the list of call arguments that cannot be shortened, because they are not interpreted using the same rules as for other labels.

var LabelDenylist = map[string]bool{

    "package_group.includes": true,
}

NamePriority maps an argument name to its sorting priority.

NOTE(bazel-team): These are the old buildifier rules. It is likely that this table will change, perhaps swapping in a separate table for each call, derived from the order used in the Build Encyclopedia.

var NamePriority = map[string]int{
    "name":                                  -99,
    "archive_override.module_name":          -99,
    "git_override.module_name":              -99,
    "local_path_override.module_name":       -99,
    "multiple_version_override.module_name": -99,
    "single_version_override.module_name":   -99,
    "bazel_dep.version":                     -98,
    "module.version":                        -98,
    "gwt_name":                              -98,
    "package_name":                          -97,
    "visible_node_name":                     -96,
    "size":                                  -95,
    "timeout":                               -94,
    "testonly":                              -93,
    "src":                                   -92,
    "srcdir":                                -91,
    "srcs":                                  -90,
    "out":                                   -89,
    "outs":                                  -88,
    "hdrs":                                  -87,
    "has_services":                          -86,
    "include":                               -85,
    "of":                                    -84,
    "baseline":                              -83,

    "destdir":        1,
    "exports":        2,
    "runtime_deps":   3,
    "deps":           4,
    "implementation": 5,
    "implements":     6,
    "alwayslink":     7,
}

ProtoLoadPath is the load path for the Starlark Proto Rules.

var ProtoLoadPath = "@rules_proto//proto:defs.bzl"

ProtoNativeRules lists all Proto rules that are being migrated from Native to Starlark.

var ProtoNativeRules = []string{
    "proto_lang_toolchain",
    "proto_library",
}

ProtoNativeSymbols lists all Proto symbols that are being migrated from Native to Starlark.

var ProtoNativeSymbols = []string{
    "ProtoInfo",
    "proto_common",
}

PyLoadPath is the load path for the Starlark Python Rules.

var PyLoadPath = "@rules_python//python:defs.bzl"

PyNativeRules lists all Python rules that are being migrated from Native to Starlark.

var PyNativeRules = []string{
    "py_library",
    "py_binary",
    "py_test",
    "py_runtime",
}
var ShortenAbsoluteLabelsToRelative = false

SortableAllowlist records specific rule arguments that are guaranteed to be reorderable (format: "rule_name.attribute_name").

var SortableAllowlist = map[string]bool{}

SortableDenylist records specific rule arguments that must not be reordered.

var SortableDenylist = map[string]bool{
    "genrule.outs":       true,
    "genrule.srcs":       true,
    "cc_embed_data.srcs": true,
}
var StripLabelLeadingSlashes = false

func MergeTables

func MergeTables(labelArg, denylist, listArg, sortableListArg, sortDenylist, sortAllowlist map[string]bool, namePriority map[string]int, stripLabelLeadingSlashes, shortenAbsoluteLabelsToRelative bool)

MergeTables allows a user of the build package to override the special-case rules. The user-provided tables are merged into the built-in tables.

func OverrideTables

func OverrideTables(labelArg, denylist, listArg, sortableListArg, sortDenylist, sortAllowlist map[string]bool, namePriority map[string]int, stripLabelLeadingSlashes, shortenAbsoluteLabelsToRelative bool)

OverrideTables allows a user of the build package to override the special-case rules. The user-provided tables replace the built-in tables.

func ParseAndUpdateJSONDefinitions

func ParseAndUpdateJSONDefinitions(file string, merge bool) error

ParseAndUpdateJSONDefinitions reads definitions from file and merges or overrides the values in memory.

type Definitions

type Definitions struct {
    IsLabelArg                      map[string]bool
    LabelDenylist                   map[string]bool
    IsListArg                       map[string]bool
    IsSortableListArg               map[string]bool
    SortableDenylist                map[string]bool
    SortableAllowlist               map[string]bool
    NamePriority                    map[string]int
    StripLabelLeadingSlashes        bool
    ShortenAbsoluteLabelsToRelative bool
}

func ParseJSONDefinitions

func ParseJSONDefinitions(file string) (Definitions, error)

ParseJSONDefinitions reads and parses JSON table definitions from file.