Label

Laporkan masalah Lihat sumber Nightly · 8.4 · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

ID target BUILD.

Untuk setiap instance Label l, representasi string str(l) memiliki properti Label(str(l)) == l, terlepas dari tempat panggilan Label() terjadi.

Saat diteruskan sebagai argumen posisional ke print() atau fail(), Label 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)

Mengonversi string label menjadi objek 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 objek Label diteruskan, objek tersebut akan ditampilkan apa adanya.

nama

string Label.name

Nama target yang dirujuk oleh label ini. Misalnya:
Label("@@foo//pkg/foo:abc").name == "abc"

paket

string Label.package

Nama paket yang berisi target yang dirujuk oleh label ini, tanpa nama repositori. Misalnya:
Label("@@repo//pkg/foo:abc").package == "pkg/foo"

relatif

Label Label.relative(relName)

Eksperimental. API ini bersifat eksperimental dan dapat berubah kapan saja. Jangan mengandalkannya. Fitur ini dapat diaktifkan secara eksperimental dengan menyetel --+incompatible_enable_deprecated_label_apis
Tidak digunakan lagi. Metode ini berperilaku secara mengejutkan saat digunakan dengan argumen yang berisi nama repo yang jelas. Lebih memilih Label.same_package_label(), native.package_relative_label(), atau Label().

Menyelesaikan label yang bersifat absolut (dimulai dengan //) atau relatif terhadap paket saat ini. Jika label ini ada di repositori jarak jauh, argumen akan diselesaikan 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'}, maka pemetaan ulang berikut akan terjadi:

Label("@repo//foo/bar:baz").relative("@other//wiz:quux") == Label("@remapped//wiz:quux")

Parameter

Parameter Deskripsi
relName string; wajib diisi
Label yang akan diselesaikan relatif terhadap label ini.

repo_name

string Label.repo_name

Nama kanonis repositori yang berisi target yang dirujuk oleh label ini, tanpa tanda @ di depannya (@). Misalnya,
Label("@@foo//bar:baz").repo_name == "foo"

same_package_label

Label Label.same_package_label(target_name)

Membuat label dalam paket yang sama dengan label ini dengan nama target yang diberikan.

Parameter

Parameter Deskripsi
target_name string; wajib
Nama target label baru.

workspace_name

string Label.workspace_name

Eksperimental. API ini bersifat eksperimental dan dapat berubah kapan saja. Jangan mengandalkannya. Fitur ini dapat diaktifkan secara eksperimental dengan menyetel --+incompatible_enable_deprecated_label_apis
Tidak digunakan lagi. Nama kolom "nama ruang kerja" tidak tepat di sini; gunakan Label.repo_name yang berperilaku identik sebagai gantinya.

Nama kanonis repositori yang berisi target yang dirujuk oleh label ini, tanpa tanda @ di depannya (@). Misalnya,

Label("@@foo//bar:baz").workspace_name == "foo"

workspace_root

string Label.workspace_root

Menampilkan root eksekusi untuk repositori yang berisi target yang dirujuk oleh label ini, relatif terhadap execroot. Misalnya:
Label("@repo//pkg/foo:abc").workspace_root == "external/repo"