BUILD hedef tanımlayıcısı.
Her Label
örneği l
için dize gösterimi str(l)
, Label()
çağrısının nerede gerçekleştiğine bakılmaksızın Label(str(l)) == l
özelliğine sahiptir.
print()
veya fail()
'ye konumsal bağımsız değişkenler olarak iletildiğinde Label
, bunun yerine insanlar tarafından okunabilirlik için optimize edilmiş bir dize gösterimi kullanır. Bu gösterimde, mümkünse ana deponun bakış açısıyla görünen bir depo adı kullanılır.
Üyeler
Şirket
Label Label(input)
.bzl
kaynak dosyasının bulunduğu paket bağlamında bir Label
nesnesine dönüştürür. Belirtilen değer zaten bir Label
ise değiştirilmeden döndürülür.Makrolar için ilgili bir işlev olan native.package_relative_label()
, girişi şu anda oluşturulmakta olan paket bağlamında Label
'ye dönüştürür. Etiket değerli kural özellikleri tarafından otomatik olarak yapılan dize-etiket dönüşümünü taklit etmek için bu işlevi kullanın.
Parametreler
Parametre | Açıklama |
---|---|
input
|
string veya Label;
required Giriş etiketi dizesi veya Etiket nesnesi. Bir Label nesnesi iletilirse olduğu gibi döndürülür. |
ad
string Label.name
Label("@@foo//pkg/foo:abc").name == "abc"
paket
string Label.package
Label("@@repo//pkg/foo:abc").package == "pkg/foo"
ilgili
Label Label.relative(relName)
--+incompatible_enable_deprecated_label_apis
Kullanımdan kaldırıldı. ayarlanarak deneysel olarak etkinleştirilebilir. Bu yöntem, belirgin bir depo adı içeren bir bağımsız değişkenle kullanıldığında şaşırtıcı bir şekilde çalışır. Bunun yerine
Label.same_package_label()
, native.package_relative_label()
veya Label()
kullanın.Mutlak (//
ile başlar) veya mevcut pakete göre göreceli olan bir etiketi çözer. Bu etiket uzak bir depoda bulunuyorsa bağımsız değişken, o depoya göre çözümlenir. Bağımsız değişkende bir depo adı varsa mevcut etiket yoksayılır ve bağımsız değişken olduğu gibi döndürülür. Ancak depo adı mevcut depo eşlemesindeyse yeniden yazılır. Ayrılmış etiketler de olduğu gibi döndürülür.
Örneğin:
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")
Depo eşlemesi {'@other' : '@remapped'}
ise aşağıdaki yeniden eşleme gerçekleşir:
Label("@repo//foo/bar:baz").relative("@other//wiz:quux") == Label("@remapped//wiz:quux")
Parametreler
Parametre | Açıklama |
---|---|
relName
|
string;
required Bu etikete göre çözümlenecek etiket. |
repo_name
string Label.repo_name
@
) bulunmaz. Örneğin, Label("@@foo//bar:baz").repo_name == "foo"
same_package_label
Label Label.same_package_label(target_name)
Parametreler
Parametre | Açıklama |
---|---|
target_name
|
string;
required Yeni etiketin hedef adı. |
workspace_name
string Label.workspace_name
--+incompatible_enable_deprecated_label_apis
Kullanımdan kaldırıldı. ayarlanarak deneysel olarak etkinleştirilebilir. "Çalışma alanı adı" alan adı burada yanlış bir adlandırmadır. Bunun yerine aynı şekilde çalışan
Label.repo_name
alanını kullanın.Bu etiket tarafından belirtilen hedefi içeren deponun standart adı. Adın başında @ işareti (@
) bulunmaz. Örneğin,
Label("@@foo//bar:baz").workspace_name == "foo"
workspace_root
string Label.workspace_root
Label("@repo//pkg/foo:abc").workspace_root == "external/repo"