लेबल

यह BUILD टारगेट आइडेंटिफ़ायर होता है.

हर Label इंस्टेंस l के लिए, स्ट्रिंग के तौर पर दिखाए गए str(l) में यह प्रॉपर्टी होती है कि Label(str(l)) == l, भले ही Label() कॉल कहीं भी हो.

सदस्य

लेबल

Label Label(input)

यह फ़ंक्शन, लेबल स्ट्रिंग को Label ऑब्जेक्ट में बदलता है. यह उस पैकेज के हिसाब से काम करता है जिसमें कॉलिंग .bzl सोर्स फ़ाइल मौजूद है. अगर दी गई वैल्यू पहले से ही Label है, तो उसे बिना किसी बदलाव के वापस कर दिया जाता है.

मैक्रो के लिए, इससे जुड़ा फ़ंक्शन native.package_relative_label(), इनपुट को Label में बदलता है. यह बदलाव, मौजूदा समय में बनाए जा रहे पैकेज के हिसाब से होता है. इस फ़ंक्शन का इस्तेमाल करके, स्ट्रिंग को लेबल में बदलने की प्रोसेस को दोहराया जा सकता है. यह प्रोसेस, लेबल वाली वैल्यू के नियम एट्रिब्यूट के ज़रिए अपने-आप पूरी होती है.

पैरामीटर

पैरामीटर ब्यौरा
input string; या Label; ज़रूरी है
इनपुट लेबल स्ट्रिंग या लेबल ऑब्जेक्ट. अगर कोई Label ऑब्जेक्ट पास किया जाता है, तो उसे उसी तरह वापस कर दिया जाता है.

नाम

string Label.name

पैकेज में मौजूद इस लेबल का नाम. उदाहरण के लिए:
Label("//pkg/foo:abc").name == "abc"

पैकेज

string Label.package

इस लेबल का पैकेज वाला हिस्सा. उदाहरण के लिए:
Label("//pkg/foo:abc").package == "pkg/foo"

संबंधित

Label Label.relative(relName)

यह ऐसे लेबल को हल करता है जो या तो पूरा (// से शुरू होता है) या मौजूदा पैकेज के हिसाब से होता है. अगर यह लेबल किसी रिमोट रिपॉज़िटरी में है, तो आर्ग्युमेंट को उस रिपॉज़िटरी के हिसाब से हल किया जाएगा. अगर आर्ग्युमेंट में किसी डेटाबेस का नाम शामिल है, तो मौजूदा लेबल को अनदेखा कर दिया जाता है. साथ ही, आर्ग्युमेंट को उसी तरह से दिखाया जाता है. हालांकि, अगर डेटाबेस का नाम मौजूदा डेटाबेस मैपिंग में है, तो उसे फिर से लिखा जाता है. रिज़र्व किए गए लेबल भी पहले जैसे ही दिखेंगे.
उदाहरण के लिए:
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 ज़रूरी है
यह वह लेबल है जिसे इस लेबल के हिसाब से तय किया जाएगा.

workspace_name

string Label.workspace_name

इस लेबल का रिपॉज़िटरी वाला हिस्सा. उदाहरण के लिए,
Label("@foo//bar:baz").workspace_name == "foo"

workspace_root

string Label.workspace_root

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