Etiqueta

Es un identificador de destino de BUILD.

Para cada instancia Label l, la representación de cadena str(l) tiene la propiedad Label(str(l)) == l, sin importar dónde se produzca la llamada Label().

Cuando se pasa como argumentos posicionales a print() o fail(), Label usa una representación de cadena optimizada para la legibilidad humana. Esta representación usa un nombre de repositorio aparente desde la perspectiva del repositorio principal, si es posible.

Miembros

Etiqueta

Label Label(input)

Convierte una cadena de etiqueta en un objeto Label, en el contexto del paquete en el que reside el archivo fuente .bzl que realiza la llamada. Si el valor proporcionado ya es un Label, se muestra sin cambios.

Para las macros, una función relacionada, native.package_relative_label(), convierte la entrada en una Label en el contexto del paquete que se está construyendo. Usa esa función para imitar la conversión de cadena a etiqueta que realizan automáticamente los atributos de regla con valores de etiqueta.

Parámetros

Parámetro Descripción
input cadena; o etiqueta; obligatorio
Es la cadena de etiqueta de entrada o el objeto de etiqueta. Si se pasa un objeto de etiqueta, se muestra tal como está.

name

string Label.name

Es el nombre del destino al que hace referencia esta etiqueta. Por ejemplo:
Label("@@foo//pkg/foo:abc").name == "abc"

Paquete

string Label.package

Es el nombre del paquete que contiene el destino al que hace referencia esta etiqueta, sin el nombre del repositorio. Por ejemplo:
Label("@@repo//pkg/foo:abc").package == "pkg/foo"

pariente

Label Label.relative(relName)

Experimental. Esta API es experimental y puede cambiar en cualquier momento. No dependas de ella. Se puede habilitar de forma experimental configurando --+incompatible_enable_deprecated_label_apis
Obsoleto. Este método se comporta de manera sorprendente cuando se usa con un argumento que contiene un nombre de repositorio aparente. Es preferible usar Label.same_package_label(), native.package_relative_label() o Label().

Resuelve una etiqueta que es absoluta (comienza con //) o relativa al paquete actual. Si esta etiqueta está en un repositorio remoto, el argumento se resolverá en relación con ese repositorio. Si el argumento contiene un nombre de repositorio, se ignora la etiqueta actual y se muestra el argumento tal como está, excepto que se reescribe el nombre del repositorio si está en la asignación del repositorio actual. Las etiquetas reservadas también se mostrarán tal como están.
Por ejemplo:

Label("//foo/bar:baz").relative(":quux") == Label("//foo/bar:quux")
Label("//foo/bar:baz").relative("//wiz:quux") == Label("//wiz:quux")
Label("@repo//foo/bar:baz").relative("//wiz:quux") == Label("@repo//wiz:quux")
Label("@repo//foo/bar:baz").relative("//visibility:public") == Label("//visibility:public")
Label("@repo//foo/bar:baz").relative("@other//wiz:quux") == Label("@other//wiz:quux")

Si la asignación del repositorio que se pasa es {'@other' : '@remapped'}, se realizará la siguiente reasignación:

Label("@repo//foo/bar:baz").relative("@other//wiz:quux") == Label("@remapped//wiz:quux")

Parámetros

Parámetro Descripción
relName obligatorio
Es la etiqueta que se resolverá en relación con esta.

repo_name

string Label.repo_name

Es el nombre canónico del repositorio que contiene el destino al que hace referencia esta etiqueta, sin ningún signo de arroba (@) inicial. Por ejemplo,
Label("@@foo//bar:baz").repo_name == "foo"

same_package_label

Label Label.same_package_label(target_name)

Crea una etiqueta en el mismo paquete que esta etiqueta con el nombre de destino determinado.

Parámetros

Parámetro Descripción
target_name obligatorio
Es el nombre de destino de la etiqueta nueva.

workspace_name

string Label.workspace_name

Experimental. Esta API es experimental y puede cambiar en cualquier momento. No dependas de ella. Se puede habilitar de forma experimental configurando --+incompatible_enable_deprecated_label_apis
Obsoleto. El nombre del campo "nombre del espacio de trabajo" es un nombre inapropiado aquí; usa Label.repo_name que se comporta de forma idéntica.

Es el nombre canónico del repositorio que contiene el destino al que hace referencia esta etiqueta, sin ningún signo de arroba (@) inicial. Por ejemplo,

Label("@@foo//bar:baz").workspace_name == "foo"

workspace_root

string Label.workspace_root

Muestra la raíz de ejecución del repositorio que contiene el destino al que hace referencia esta etiqueta, en relación con execroot. Por ejemplo:
Label("@repo//pkg/foo:abc").workspace_root == "external/repo"