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_root
Label("@repo//pkg/foo:abc").workspace_root == "external/repo"