हर 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
Label("@repo//pkg/foo:abc").workspace_root == "external/repo"