अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है बिल्ड टारगेट आइडेंटिफ़ायर.
हर 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; या लेबल;
ज़रूरी है इनपुट लेबल स्ट्रिंग या लेबल ऑब्जेक्ट. अगर लेबल ऑब्जेक्ट को पास किया जाता है, तो उसे पहले जैसा किया जाता है. |
नाम
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इस लेबल के ज़रिए रेफ़र किए गए टारगेट की रिपॉज़िटरी का एक्ज़ीक्यूशन रूट दिखाता है. उदाहरण के लिए:
Label("@repo//pkg/foo:abc").workspace_root == "external/repo"