Para cada instância de Label
l
, a representação de string str(l)
tem a propriedade Label(str(l)) == l
, independentemente de onde a chamada de Label()
ocorra.
Quando transmitidos como argumentos posicionais para print()
ou fail()
, Label
usa uma representação de string otimizada para legibilidade humana. Essa representação usa um nome do repositório aparente da perspectiva do repositório principal, se possível.
Participantes
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 reside. 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 regra com valor de rótulo.
Parâmetros
Parâmetro | Descrição |
---|---|
input
|
string ou Rótulo;
obrigatório A string do rótulo de entrada ou o objeto do rótulo. Se um objeto Rótulo for passado, será retornado no estado em que se encontra. |
nome
string Label.nameO nome do destino referido 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 referido por este rótulo, sem o nome do repositório. Por exemplo:
Label("@@repo//pkg/foo:abc").package == "pkg/foo"
relative
Label Label.relative(relName)Experimental: Essa API é experimental e pode mudar a qualquer momento. Não dependa disso. Ele pode ser ativado de forma experimental configurando
--+incompatible_enable_deprecated_label_apis
como Descontinuado. Esse método se comporta de maneira surpreendente quando usado com um argumento que contém um nome de repositório aparente. Use
Label.same_package_label()
, native.package_relative_label()
ou Label()
.Resolve um rótulo que é 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 no estado em que se encontra, exceto que o nome do repositório será reescrito se estiver no mapeamento do repositório atual. Marcadores reservados também serão retornados no estado em que se encontram.
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;
obrigatório 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 referido por esse rótulo, sem arrobas no início (
@
). 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 desse rótulo com o nome de destino especificado.
Parâmetros
Parâmetro | Descrição |
---|---|
target_name
|
string;
obrigatório O nome do destino do novo rótulo. |
workspace_name
string Label.workspace_nameExperimental: Essa API é experimental e pode mudar a qualquer momento. Não dependa disso. Ele pode ser ativado de forma experimental configurando
--+incompatible_enable_deprecated_label_apis
como Descontinuado. O nome do campo "nome do espaço de trabalho" não está correto aqui. Use o
Label.repo_name
de comportamento idêntico.O nome canônico do repositório que contém o destino referido por esse rótulo, sem arrobas no início (@
). 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 referido por esse rótulo, em relação à execroot. Por exemplo:
Label("@repo//pkg/foo:abc").workspace_root == "external/repo"