ID target BUILD.
Untuk setiap instance Label
l
, representasi string str(l)
memiliki properti yang Label(str(l)) == l
, terlepas dari tempat panggilan Label()
terjadi.
Saat diteruskan sebagai argumen posisional ke print()
atau fail()
, Label
akan menggunakan representasi string yang dioptimalkan untuk keterbacaan manusia. Representasi ini menggunakan nama repositori yang terlihat dari perspektif repositori utama jika memungkinkan.
Anggota
Label
Label Label(input)
Label
, dalam konteks paket tempat file sumber .bzl
panggilan berada. Jika nilai yang diberikan sudah berupa Label
, nilai tersebut akan ditampilkan tanpa perubahan.Untuk makro, fungsi terkait, native.package_relative_label()
, mengonversi input menjadi Label
dalam konteks paket yang sedang dibuat. Gunakan fungsi tersebut untuk meniru konversi string ke label yang dilakukan secara otomatis oleh atribut aturan bernilai label.
Parameter
Parameter | Deskripsi |
---|---|
input
|
string; atau Label;
wajib String label input atau objek Label. Jika diteruskan, objek Label akan ditampilkan apa adanya. |
nama
string Label.name
Label("@@foo//pkg/foo:abc").name == "abc"
paket
string Label.package
Label("@@repo//pkg/foo:abc").package == "pkg/foo"
relatif
Label Label.relative(relName)
--+incompatible_enable_deprecated_label_apis
Tidak digunakan lagi. Metode ini berperilaku mengejutkan saat digunakan dengan argumen yang berisi nama repo yang jelas. Sebaiknya gunakan
Label.same_package_label()
, native.package_relative_label()
, atau Label()
.Me-resolve label yang bersifat absolut (dimulai dengan //
) atau relatif terhadap paket saat ini. Jika label ini berada di repositori jarak jauh, argumen akan di-resolve secara relatif terhadap repositori tersebut. Jika argumen berisi nama repositori, label saat ini akan diabaikan dan argumen akan ditampilkan apa adanya, kecuali nama repositori akan ditulis ulang jika ada dalam pemetaan repositori saat ini. Label yang dicadangkan juga akan ditampilkan apa adanya.
Misalnya:
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")
Jika pemetaan repositori yang diteruskan adalah {'@other' : '@remapped'}
, pemetaan ulang berikut akan dilakukan:
Label("@repo//foo/bar:baz").relative("@other//wiz:quux") == Label("@remapped//wiz:quux")
Parameter
Parameter | Deskripsi |
---|---|
relName
|
string;
required Label yang akan di-resolve relatif terhadap label ini. |
repo_name
string Label.repo_name
@
). Misalnya, Label("@@foo//bar:baz").repo_name == "foo"
same_package_label
Label Label.same_package_label(target_name)
Parameter
Parameter | Deskripsi |
---|---|
target_name
|
string;
wajib Nama target label baru. |
workspace_name
string Label.workspace_name
--+incompatible_enable_deprecated_label_apis
Tidak digunakan lagi. Nama kolom "nama ruang kerja" adalah nama yang salah di sini; gunakan
Label.repo_name
yang berperilaku sama.Nama kanonis repositori yang berisi target yang dirujuk oleh label ini, tanpa tanda @ di awal (@
). Misalnya,
Label("@@foo//bar:baz").workspace_name == "foo"
workspace_root
string Label.workspace_root
Label("@repo//pkg/foo:abc").workspace_root == "external/repo"