लेबल

समस्या की शिकायत करें सोर्स देखें Nightly · 8.4 · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

यह 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
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 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
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"