लेबल

समस्या की शिकायत करें सोर्स देखें

बिल्ड टारगेट आइडेंटिफ़ायर.

हर Label इंस्टेंस l के लिए, स्ट्रिंग प्रज़ेंटेशन str(l) में Label(str(l)) == l प्रॉपर्टी होती है, चाहे Label() कॉल कहीं भी हो.

पैसे चुकाकर बने सदस्यों के लिए

लेबल

Label Label(input)

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

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

पैरामीटर

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

नाम

string Label.name

इस लेबल से रेफ़र किए गए टारगेट का नाम. उदाहरण के लिए:
Label("@@foo//pkg/foo:abc").name == "abc"

पैकेज

string Label.package

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

relative

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

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