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