लेबल

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

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