लेबल

यह 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; required
इनपुट लेबल स्ट्रिंग या Label ऑब्जेक्ट. अगर कोई 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
Deprecated. को सेट करना होगा. जब इस तरीके का इस्तेमाल ऐसे आर्ग्युमेंट के साथ किया जाता है जिसमें रिपॉज़िटरी का नाम शामिल होता है, तो यह तरीका उम्मीद के मुताबिक काम नहीं करता. इसके बजाय, 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 string; required
नए लेबल का टारगेट नाम.

workspace_name

string Label.workspace_name

एक्सपेरिमेंटल. यह एपीआई एक्सपेरिमेंट के तौर पर उपलब्ध है. इसमें कभी भी बदलाव किया जा सकता है. कृपया इसके भरोसे न रहें. इसे एक्सपेरिमेंट के तौर पर चालू किया जा सकता है. इसके लिए, --+incompatible_enable_deprecated_label_apis
Deprecated. को सेट करना होगा. यहां फ़ील्ड का नाम "वर्कस्पेस का नाम" गलत है. इसके बजाय, 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"