लेबल

यह 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 स्ट्रिंग; या लेबल; ज़रूरी है
इनपुट लेबल स्ट्रिंग या लेबल ऑब्जेक्ट. अगर कोई 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"