BUILD टारगेट आइडेंटिफ़ायर.
हर Label
इंस्टेंस l
के लिए, स्ट्रिंग के तौर पर दिखाए गए str(l)
में Label(str(l)) == l
प्रॉपर्टी होती है. भले ही, Label()
कॉल कहीं भी हो.
print()
या fail()
को पोज़िशनल आर्ग्युमेंट के तौर पर पास करने पर, 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
|
string;
ज़रूरी है वह लेबल जिसे इस लेबल के हिसाब से हल किया जाएगा. |
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
|
string;
ज़रूरी है नए लेबल का टारगेट नाम. |
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_rootexecroot के हिसाब से, इस लेबल से रेफ़र किए गए टारगेट वाले रिपॉज़िटरी के लिए, एक्सीक्यूशन रूट दिखाता है. उदाहरण के लिए:
Label("@repo//pkg/foo:abc").workspace_root == "external/repo"