Um identificador de destino do BUILD.
Para cada instância Label
l
, a representação de string str(l)
tem a propriedade Label(str(l)) == l
, independentemente de onde a chamada Label()
ocorre.
Quando transmitido como argumentos posicionais para print()
ou fail()
, Label
usa uma representação de string otimizada para leitura humana. Essa representação usa um nome de repositório aparente do repositório principal, se possível.
Membros
Rótulo
Label Label(input)Converte uma string de rótulo em um objeto
Label
, no contexto do pacote em que o arquivo de origem .bzl
de chamada está armazenado. Se o valor fornecido já for um Label
, ele será retornado inalterado.Para macros, uma função relacionada, native.package_relative_label()
, converte a entrada em um Label
no contexto do pacote que está sendo criado. Use essa função para imitar a conversão de string em rótulo, que é feita automaticamente por atributos de regras com valor de rótulo.
Parâmetros
Parâmetro | Descrição |
---|---|
input
|
string ou Label;
obrigatório A string do rótulo de entrada ou o objeto Label. Se um objeto Label for transmitido, ele será retornado como está. |
nome
string Label.nameO nome do destino mencionado por este rótulo. Por exemplo:
Label("@@foo//pkg/foo:abc").name == "abc"
pacote
string Label.packageO nome do pacote que contém o destino mencionado por este rótulo, sem o nome do repositório. Por exemplo:
Label("@@repo//pkg/foo:abc").package == "pkg/foo"
relativo
Label Label.relative(relName)Experimental. Essa API é experimental e pode mudar a qualquer momento. Não dependa dele. Ele pode ser ativado de forma experimental definindo
--+incompatible_enable_deprecated_label_apis
Deprecated. Esse método se comporta de maneira inesperada quando usado com um argumento que contém um nome de repositório aparente. Prefira
Label.same_package_label()
, native.package_relative_label()
ou Label()
.Resolve um rótulo absoluto (que começa com //
) ou relativo ao pacote atual. Se o rótulo estiver em um repositório remoto, o argumento será resolvido em relação a ele. Se o argumento contiver um nome de repositório, o rótulo atual será ignorado e o argumento será retornado como está, exceto se o nome do repositório for substituído se ele estiver no mapeamento atual. Os rótulos reservados também são retornados como estão.
Por exemplo:
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")
Se o mapeamento do repositório transmitido for {'@other' : '@remapped'}
, o seguinte remapeamento vai ocorrer:
Label("@repo//foo/bar:baz").relative("@other//wiz:quux") == Label("@remapped//wiz:quux")
Parâmetros
Parâmetro | Descrição |
---|---|
relName
|
string;
required O rótulo que será resolvido em relação a este. |
repo_name
string Label.repo_nameO nome canônico do repositório que contém o destino mencionado por esse rótulo, sem nenhum caractere de arroba inicial (
@
). Por exemplo, Label("@@foo//bar:baz").repo_name == "foo"
same_package_label
Label Label.same_package_label(target_name)Cria um rótulo no mesmo pacote com o nome de destino fornecido.
Parâmetros
Parâmetro | Descrição |
---|---|
target_name
|
string;
obrigatório O nome de destino do novo rótulo. |
workspace_name
string Label.workspace_nameExperimental. Essa API é experimental e pode mudar a qualquer momento. Não dependa dele. Ele pode ser ativado de forma experimental definindo
--+incompatible_enable_deprecated_label_apis
Deprecated. O nome do campo "nome do espaço de trabalho" é um nome incorreto. Use
Label.repo_name
, que tem o mesmo comportamento.O nome canônico do repositório que contém o destino mencionado por esse rótulo, sem nenhum caractere de arroba inicial (@
). Por exemplo,
Label("@@foo//bar:baz").workspace_name == "foo"
workspace_root
string Label.workspace_rootRetorna a raiz de execução do repositório que contém o destino mencionado por este rótulo, em relação a execroot. Por exemplo:
Label("@repo//pkg/foo:abc").workspace_root == "external/repo"