लेबल

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

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"