Para cada instancia de Label
l
, la representación de cadena str(l)
tiene la propiedad que Label(str(l)) == l
, sin importar dónde ocurra la llamada a Label()
.
Miembros
Etiqueta
Label Label(input)Convierte una cadena de etiqueta en un objeto
Label
en el contexto del paquete en el que se encuentra el archivo de origen .bzl
que realiza la llamada. Si el valor dado ya es un Label
, se muestra sin cambios.En el caso de las macros, una función relacionada, native.package_relative_label()
, convierte la entrada en un Label
en el contexto del paquete que se está construyendo actualmente. Usa esa función para imitar la conversión de string a etiqueta que realizan automáticamente los atributos de regla con valor de etiqueta.
Parámetros
Parámetro | Descripción |
---|---|
input
|
string; o Label;
required La string de la etiqueta de entrada o el objeto Label. Si se pasa un objeto Label, se muestra tal como está. |
name
string Label.nameEs el nombre del objetivo al que hace referencia esta etiqueta. Por ejemplo:
Label("@@foo//pkg/foo:abc").name == "abc"
paquete
string Label.packageEl 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"
relative
Label Label.relative(relName)Experimental. Esta API es experimental y puede cambiar en cualquier momento. No dependas de ello. Se puede habilitar en una fase experimental si se configura
--+incompatible_enable_deprecated_label_apis
Obsoleto. Este método tiene un comportamiento sorprendente cuando se usa con un argumento que contiene un nombre de repositorio aparente. En su lugar, usa
Label.same_package_label()
, native.package_relative_label()
o Label()
.Resuelve una etiqueta que es absoluta (comienza con //
) o relativa al paquete actual. Si la etiqueta está en un repositorio remoto, el argumento se resolverá en relación con ese repositorio. Si el argumento contiene un nombre de repositorio, la etiqueta actual se ignora y el argumento se muestra tal como está, excepto que el nombre del repositorio se reescribe 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 llevará a cabo la siguiente reasignación:
Label("@repo//foo/bar:baz").relative("@other//wiz:quux") == Label("@remapped//wiz:quux")
Parámetros
Parámetro | Descripción |
---|---|
relName
|
required La etiqueta que se resolverá en relación con esta. |
repo_name
string Label.repo_nameEl nombre canónico del repositorio que contiene el destino al que hace referencia esta etiqueta, sin ningún símbolo arroba (
@
). 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 con el nombre de destino dado.
Parámetros
Parámetro | Descripción |
---|---|
target_name
|
required El nombre del destino de la etiqueta nueva. |
workspace_name
string Label.workspace_nameExperimental. Esta API es experimental y puede cambiar en cualquier momento. No dependas de ello. Se puede habilitar en una fase experimental si se configura
--+incompatible_enable_deprecated_label_apis
Obsoleto. El nombre del campo “nombre del lugar de trabajo” es inapropiado en este caso. En su lugar, usa
Label.repo_name
, que se comporta de la misma manera.El nombre canónico del repositorio que contiene el destino al que hace referencia esta etiqueta, sin ningún símbolo arroba (@
). Por ejemplo,
Label("@@foo//bar:baz").workspace_name == "foo"
workspace_root
string Label.workspace_rootMuestra la raíz de ejecución del repositorio que contiene el objetivo al que hace referencia esta etiqueta, en relación con la execroot. Por ejemplo:
Label("@repo//pkg/foo:abc").workspace_root == "external/repo"