BUILD टारगेट आइडेंटिफ़ायर.
हर Label
इंस्टेंस l
के लिए, स्ट्रिंग के तौर पर दिखाए गए str(l)
में Label(str(l)) == l
प्रॉपर्टी होती है. भले ही, Label()
कॉल कहीं भी हो.
सदस्य
लेबल
Label Label(input)
Label
ऑब्जेक्ट में बदलता है जहां कॉल करने वाली .bzl
सोर्स फ़ाइल मौजूद होती है. अगर दी गई वैल्यू पहले से ही Label
है, तो उसे बिना किसी बदलाव के दिखाया जाता है.मैक्रो के लिए, native.package_relative_label()
फ़ंक्शन, इनपुट को Label
में बदल देता है. यह बदलाव, फ़िलहाल बनाए जा रहे पैकेज के संदर्भ में किया जाता है. स्ट्रिंग से लेबल में बदलने की प्रोसेस को दोहराने के लिए, इस फ़ंक्शन का इस्तेमाल करें. यह प्रोसेस, लेबल की वैल्यू वाले नियम एट्रिब्यूट की मदद से अपने-आप होती है.
पैरामीटर
पैरामीटर | ब्यौरा |
---|---|
input
|
स्ट्रिंग या लेबल;
ज़रूरी है इनपुट लेबल स्ट्रिंग या लेबल ऑब्जेक्ट. अगर कोई लेबल ऑब्जेक्ट पास किया जाता है, तो उसे वैसे ही दिखाया जाता है. |
नाम
string Label.name
Label("@@foo//pkg/foo:abc").name == "abc"
पैकेज
string Label.package
Label("@@repo//pkg/foo:abc").package == "pkg/foo"
संबंधित
Label Label.relative(relName)
--+incompatible_enable_deprecated_label_apis
अब काम नहीं करता को सेट करें. इस तरीके का इस्तेमाल, किसी ऐसे आर्ग्युमेंट के साथ करने पर आश्चर्यजनक नतीजे मिलते हैं जिसमें साफ़ तौर पर कोई रिपॉज़िटरी का नाम शामिल होता है. इसके बजाय,
Label.same_package_label()
, native.package_relative_label()
या Label()
का इस्तेमाल करें.यह किसी ऐसे लेबल को रिज़ॉल्व करता है जो एब्सोलूट (//
से शुरू होता है) या मौजूदा पैकेज से रिलेटिव होता है. अगर यह लेबल किसी रिमोट रिपॉज़िटरी में है, तो उस रिपॉज़िटरी के हिसाब से आर्ग्युमेंट का हल निकाला जाएगा. अगर आर्ग्युमेंट में कोई रिपॉज़िटरी का नाम है, तो मौजूदा लेबल को अनदेखा कर दिया जाता है और आर्ग्युमेंट को वैसा ही दिखाया जाता है जैसा वह है. हालांकि, अगर रिपॉज़िटरी का नाम मौजूदा रिपॉज़िटरी मैपिंग में है, तो उसे फिर से लिखा जाता है. रिज़र्व किए गए लेबल भी बिना किसी बदलाव के दिखाए जाएंगे.
उदाहरण के लिए:
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")
अगर सबमिट की गई रिपॉज़िटरी मैपिंग {'@other' : '@remapped'}
है, तो यह रीमैपिंग होगी:
Label("@repo//foo/bar:baz").relative("@other//wiz:quux") == Label("@remapped//wiz:quux")
पैरामीटर
पैरामीटर | ब्यौरा |
---|---|
relName
|
ज़रूरी है वह लेबल जिसे इस लेबल के हिसाब से हल किया जाएगा. |
repo_name
string Label.repo_name
@
) नहीं होना चाहिए. उदाहरण के लिए, Label("@@foo//bar:baz").repo_name == "foo"
same_package_label
Label Label.same_package_label(target_name)
पैरामीटर
पैरामीटर | ब्यौरा |
---|---|
target_name
|
ज़रूरी है नए लेबल का टारगेट नाम. |
workspace_name
string Label.workspace_name
--+incompatible_enable_deprecated_label_apis
अब काम नहीं करता को सेट करें. फ़ील्ड का नाम "वर्कस्पेस का नाम" गलत है. इसके बजाय,
Label.repo_name
का इस्तेमाल करें.इस लेबल से रेफ़र किए गए टारगेट वाले रिपॉज़िटरी का कैननिकल नाम. इसमें कोई भी ऐट-साइन (@
) नहीं होना चाहिए. उदाहरण के लिए,
Label("@@foo//bar:baz").workspace_name == "foo"
workspace_root
string Label.workspace_root
Label("@repo//pkg/foo:abc").workspace_root == "external/repo"