Para cada instância Label l, a representação de string str(l) tem a propriedade que 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 legibilidade humana. Essa representação usa um nome de repositório aparente da perspectiva do repositório principal, se possível.
Membros
Rótulo
Label Label(input)
Label, no contexto do pacote em que o arquivo de origem .bzl de chamada reside. Se o valor fornecido já for um Label, ele será retornado sem alterações.Para macros, uma função relacionada, native.package_relative_label(), converte a entrada em um Label no contexto do pacote que está sendo construído. Use essa função para imitar a conversão de string para rótulo que é feita automaticamente por atributos de regra com valor de rótulo.
Parâmetros
| Parâmetro | Descrição |
|---|---|
input
|
string; ou Label;
obrigatório A string de rótulo de entrada ou o objeto de rótulo. Se um objeto de rótulo for transmitido, ele será retornado como está. |
name
string Label.name
Label("@@foo//pkg/foo:abc").name == "abc"Pacote
string Label.package
Label("@@repo//pkg/foo:abc").package == "pkg/foo"relativo
Label Label.relative(relName)
--+incompatible_enable_deprecated_label_apis Obsoleto. Esse método se comporta de forma surpreendente 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 (começa com //) ou relativo ao pacote atual. Se esse rótulo estiver em um repositório remoto, o argumento será resolvido em relação a esse repositório. 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 reescrito se estiver no mapeamento do repositório atual. Os rótulos reservados também serã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 ocorrerá:
Label("@repo//foo/bar:baz").relative("@other//wiz:quux") == Label("@remapped//wiz:quux")
Parâmetros
| Parâmetro | Descrição |
|---|---|
relName
|
string;
obrigatório O rótulo que será resolvido em relação a esse. |
repo_name
string Label.repo_name
@) à esquerda. Por exemplo, Label("@@foo//bar:baz").repo_name == "foo"same_package_label
Label Label.same_package_label(target_name)
Parâmetros
| Parâmetro | Descrição |
|---|---|
target_name
|
string;
required O nome de destino do novo rótulo. |
workspace_name
string Label.workspace_name
--+incompatible_enable_deprecated_label_apis Obsoleto. O nome do campo "nome do espaço de trabalho" é inadequado aqui. Use
Label.repo_name, que se comporta de forma idêntica.O nome canônico do repositório que contém o destino referenciado por esse rótulo, sem nenhum sinal de arroba (@) à esquerda. Por exemplo,
Label("@@foo//bar:baz").workspace_name == "foo"workspace_root
string Label.workspace_root
Label("@repo//pkg/foo:abc").workspace_root == "external/repo"