लेबल

किसी समस्या की शिकायत करें सोर्स देखें Nightly · 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

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

execroot के हिसाब से, इस लेबल से रेफ़र किए गए टारगेट वाले रिपॉज़िटरी के लिए, एक्सीक्यूशन रूट दिखाता है. उदाहरण के लिए:
Label("@repo//pkg/foo:abc").workspace_root == "external/repo"