मॉड्यूल_टैब

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

मॉड्यूल एक्सटेंशन का कॉन्टेक्स्ट, जिसमें हेल्पर फ़ंक्शन और डिपेंडेंसी ग्राफ़ में काम के टैग की जानकारी शामिल होती है. मॉड्यूल एक्सटेंशन बनाते समय, आपको implementation फ़ंक्शन में आर्ग्युमेंट के तौर पर एकModul_ctx ऑब्जेक्ट मिलता है.

सदस्य

डाउनलोड करें

unknown module_ctx.download(url, output='', sha256='', executable=False, allow_fail=False, canonical_id='', auth={}, headers={}, *, integrity='', block=True)

दिए गए यूआरएल के लिए, आउटपुट पाथ में फ़ाइल डाउनलोड करता है. साथ ही, success वाला स्ट्रक्चर दिखाता है. यह एक फ़्लैग होता है, जो true होता है, अगर डाउनलोड पूरा हो जाता है. अगर डाउनलोड पूरा हो जाता है, तो sha256 और integrity फ़ील्ड के साथ फ़ाइल का हैश दिखाता है.

पैरामीटर

पैरामीटर ब्यौरा
url string; या string में बदलाव करने की सुविधा हो; ज़रूरी है
एक ही फ़ाइल का रेफ़रंस देने वाले डुप्लीकेट यूआरएल की सूची.
output string; या Label; या path; आउटपुट फ़ाइल का ''
पाथ डिफ़ॉल्ट रूप से रिपॉज़िटरी डायरेक्ट्री के हिसाब से होता है.
sha256 डाउनलोड की गई फ़ाइल का हैश SHA-256 डिफ़ॉल्ट तौर पर ''
है. यह डाउनलोड की गई फ़ाइल के SHA-256 हैश से मेल खाना चाहिए. रिमोट फ़ाइलों में बदलाव हो सकता है. इसलिए, SHA-256 को हटा देना सुरक्षा के लिहाज़ से जोखिम भरा हो सकता है. इस फ़ील्ड को हटाने पर, आपका बिल्ड पूरी तरह से सुरक्षित नहीं रहेगा. डेवलपमेंट को आसान बनाने के लिए, इसे सेट करना ज़रूरी नहीं है. हालांकि, इसे शिपिंग से पहले सेट करना चाहिए.
executable डिफ़ॉल्ट रूप से False
होता है बनाई गई फ़ाइल पर, 'चलाया जा सकता है' फ़्लैग सेट करें. यह डिफ़ॉल्ट रूप से गलत होता है.
allow_fail डिफ़ॉल्ट रूप से False
पर सेट होता है अगर सेट किया जाता है, तो डाउनलोड न हो पाने की गड़बड़ी दिखाने के बजाय, रिटर्न वैल्यू में गड़बड़ी की जानकारी दें
canonical_id '' डिफ़ॉल्ट है
अगर सेट हो, तो कैश मेमोरी हिट को उन मामलों में सीमित करें जहां फ़ाइल को उसी कैननिकल आईडी के साथ कैश मेमोरी में जोड़ा गया था
auth डिफ़ॉल्ट {}
है यह एक वैकल्पिक डिक्शनरी है, जिसमें कुछ यूआरएल के लिए पुष्टि करने की जानकारी दी गई है.
headers डिफ़ॉल्ट {}
है सभी यूआरएल के लिए http हेडर की जानकारी देने वाली वैकल्पिक डिक्शनरी.
integrity डिफ़ॉल्ट रूप से ''
सब-सोर्स इंटिग्रिटी फ़ॉर्मैट में, डाउनलोड की गई फ़ाइल का अनुमानित चेकसम. यह डाउनलोड की गई फ़ाइल के चेकसम से मेल खाना चाहिए. चेकसम को हटाना सुरक्षा के लिहाज़ से जोखिम भरा है, क्योंकि रिमोट फ़ाइलों में बदलाव हो सकता है. इस फ़ील्ड को हटाने पर, आपका बिल्ड पूरी तरह से सुरक्षित नहीं रहेगा. डेवलपमेंट को आसान बनाने के लिए, इसे सेट करना ज़रूरी नहीं है. हालांकि, इसे शिपिंग से पहले सेट करना चाहिए.
block डिफ़ॉल्ट तौर पर, यह True
पर सेट होता है अगर इसे false पर सेट किया जाता है, तो कॉल तुरंत रिटर्न हो जाता है. साथ ही, सामान्य रिटर्न वैल्यू के बजाय, यह एक ही तरीके, wait() के साथ एक टोकन दिखाता है. यह टोकन, डाउनलोड पूरा होने तक ब्लॉक करता है और सामान्य रिटर्न वैल्यू दिखाता है या सामान्य तौर पर थ्रो करता है.

download_and_extract

struct module_ctx.download_and_extract(url, output='', sha256='', type='', stripPrefix='', allow_fail=False, canonical_id='', auth={}, headers={}, *, integrity='', rename_files={})

यह फ़ंक्शन, दिए गए यूआरएल की फ़ाइल को आउटपुट पाथ में डाउनलोड करता है, उसे निकालता है, और success वाला स्ट्रक्चर दिखाता है. यह एक फ़्लैग होता है, जो true होता है, अगर डाउनलोड पूरा हो जाता है. अगर डाउनलोड पूरा हो जाता है, तो sha256 और integrity फ़ील्ड के साथ फ़ाइल का हैश दिखाया जाता है.

पैरामीटर

पैरामीटर ब्यौरा
url string; या string में बदलाव करने की सुविधा हो; ज़रूरी है
एक ही फ़ाइल का रेफ़रंस देने वाले डुप्लीकेट यूआरएल की सूची.
output स्ट्रिंग; या लेबल; या पाथ; डिफ़ॉल्ट रूप से ''
वह पाथ जहां संग्रह को अनपैक किया जाएगा. यह पाथ, रिपॉज़िटरी डायरेक्ट्री से लिया जाता है.
sha256 डिफ़ॉल्ट तौर पर, ''
डाउनलोड की गई फ़ाइल का अनुमानित SHA-256 हैश. यह डाउनलोड की गई फ़ाइल के SHA-256 हैश से मेल खाना चाहिए. SHA-256 को हटाना सुरक्षा के लिहाज़ से जोखिम भरा है, क्योंकि रिमोट फ़ाइलों में बदलाव हो सकता है. इस फ़ील्ड को छोड़ने से आपका बिल्ड नॉन-हर्मेटिक हो जाएगा. डेवलपमेंट को आसान बनाने के लिए, इसे सेट करना ज़रूरी नहीं है. हालांकि, इसे शिपिंग से पहले सेट करना चाहिए. अगर हैश दिया गया है, तो पहले रिपॉज़िटरी कैश में उस हैश वाली फ़ाइल की जांच की जाएगी. अगर फ़ाइल कैश में नहीं मिली, तो ही उसे डाउनलोड करने की कोशिश की जाएगी. डाउनलोड होने के बाद, फ़ाइल को कैश मेमोरी में जोड़ दिया जाएगा.
type डिफ़ॉल्ट तौर पर, ''
डाउनलोड की गई फ़ाइल का संग्रह टाइप. डिफ़ॉल्ट रूप से, यूआरएल के फ़ाइल एक्सटेंशन से यह तय होता है कि संग्रह किस तरह का है. अगर फ़ाइल का कोई एक्सटेंशन नहीं है, तो यहां "zip", "jar", "war", "aar", "tar", "tar.gz", "tgz", "tar.xz", "txz", ".tar.zst", ".tzst", "tar.bz2", ".tbz", ".ar" या ".deb" में से कोई एक एक्सटेंशन डालें.
stripPrefix ''
एक डायरेक्ट्री प्रीफ़िक्स है, जो एक्सट्रैक्ट की गई फ़ाइलों से अलग करता है. कई संग्रहों में एक टॉप-लेवल डायरेक्ट्री होती है, जिसमें संग्रह की सभी फ़ाइलें होती हैं. build_file में इस प्रीफ़िक्स को बार-बार बताने के बजाय, इस फ़ील्ड का इस्तेमाल करके, निकाली गई फ़ाइलों से इसे हटाया जा सकता है.
allow_fail डिफ़ॉल्ट रूप से False
पर सेट होता है अगर सेट किया जाता है, तो डाउनलोड न हो पाने की गड़बड़ी दिखाने के बजाय, रिटर्न वैल्यू में गड़बड़ी की जानकारी दें
canonical_id '' डिफ़ॉल्ट है
अगर सेट हो, तो कैश मेमोरी हिट को उन मामलों में सीमित करें जहां फ़ाइल को उसी कैननिकल आईडी के साथ कैश मेमोरी में जोड़ा गया था
auth डिफ़ॉल्ट {}
है यह एक वैकल्पिक डिक्शनरी है, जिसमें कुछ यूआरएल के लिए पुष्टि करने की जानकारी दी गई है.
headers डिफ़ॉल्ट {}
है सभी यूआरएल के लिए http हेडर की जानकारी देने वाली वैकल्पिक डिक्शनरी.
integrity यह डिफ़ॉल्ट रूप से '' पर सेट होती है
डाउनलोड की गई फ़ाइल का अनुमानित चेकसम, सबरिसॉर्स इंटेग्रिटी फ़ॉर्मैट में. यह डाउनलोड की गई फ़ाइल के चेकसम से मेल खाना चाहिए. चेकसम को हटाने से सुरक्षा जोखिम हो सकता है, क्योंकि रिमोट फ़ाइलें बदल सकती हैं. इस फ़ील्ड को छोड़ने से आपका बिल्ड नॉन-हर्मेटिक हो जाएगा. डेवलपमेंट को आसान बनाने के लिए, इसे सेट करना ज़रूरी नहीं है. हालांकि, इसे शिपिंग से पहले सेट करना चाहिए.
rename_files डिफ़ॉल्ट रूप से {}
एक वैकल्पिक डिक्शनरी, जिसमें एक्सट्रैक्ट करने के दौरान फ़ाइलों के नाम बदलने के बारे में बताया गया है. किसी कीवर्ड से पूरी तरह मेल खाने वाले नाम वाली संग्रहित एंट्री का नाम, डायरेक्ट्री के प्रीफ़िक्स में बदलाव करने से पहले, वैल्यू पर बदल दिया जाएगा. इसका इस्तेमाल उन संग्रहों को निकालने के लिए किया जा सकता है जिनमें यूनिकोड फ़ाइल नाम नहीं हैं या जिनमें ऐसी फ़ाइलें हैं जो केस-इनसेंसिटिव फ़ाइल सिस्टम पर एक ही पाथ में निकाली जाएंगी.

लागू करना

exec_result module_ctx.execute(arguments, timeout=600, environment={}, quiet=True, working_directory="")

आर्ग्युमेंट की सूची में दिए गए कमांड को लागू करता है. कमांड को लागू करने में timeout सेकंड लग सकते हैं. डिफ़ॉल्ट रूप से, यह समय 600 सेकंड होता है. यह तरीका, exec_result स्ट्रक्चर दिखाता है, जिसमें निर्देश का आउटपुट होता है. environment मैप का इस्तेमाल, प्रोसेस में पास किए जाने वाले कुछ एनवायरमेंट वैरिएबल को बदलने के लिए किया जा सकता है.

पैरामीटर

पैरामीटर ब्यौरा
arguments ज़रूरी
आर्ग्युमेंट की सूची, पहला एलिमेंट उस प्रोग्राम का पाथ होना चाहिए जिसे चलाना है.
timeout डिफ़ॉल्ट तौर पर, 600
निर्देश की ज़्यादा से ज़्यादा अवधि सेकंड में होती है (डिफ़ॉल्ट अवधि 600 सेकंड होती है).
environment डिफ़ॉल्ट रूप से {}
है प्रोसेस में पास करने के लिए, कुछ एनवायरमेंट वैरिएबल को सेट करने के लिए ज़रूरी है.
quiet डिफ़ॉल्ट तौर पर, यह True
होता है अगर टर्मिनल पर stdout और stderr को प्रिंट करना है.
working_directory डिफ़ॉल्ट तौर पर, ""
निर्देश लागू करने के लिए वर्किंग डायरेक्ट्री है. यह रिपॉज़िटरी रूट के हिसाब से या एब्सोलूट हो सकता है.

extension_metadata

extension_metadata module_ctx.extension_metadata(root_module_direct_deps=None, root_module_direct_dev_deps=None, reproducible=False)

एक ऐसा ऑब्जेक्ट बनाता है जिसे मॉड्यूल एक्सटेंशन के लागू करने वाले फ़ंक्शन से लौटाया जा सकता है. इससे, Bazel को एक्सटेंशन से जनरेट की गई रिपॉज़िटरी का मेटाडेटा मिलता है.

पैरामीटर

पैरामीटर ब्यौरा
root_module_direct_deps स्ट्रिंग या स्ट्रिंग या None का क्रम; डिफ़ॉल्ट None है
उन रिपॉज़िटरी के नाम जिन्हें एक्सटेंशन, रूट मॉड्यूल की डायरेक्ट डिपेंडेंसी मानता है. अगर रूट मॉड्यूल, अतिरिक्त रिपॉज़िटरी इंपोर्ट करता है या use_repo के ज़रिए इन सभी रिपॉज़िटरी को इंपोर्ट नहीं करता है, तो एक्सटेंशन का आकलन करने पर Bazel एक चेतावनी प्रिंट करेगा. साथ ही, उपयोगकर्ता को use_repo कॉल को अपने-आप ठीक करने के लिए bazel mod tidy चलाने का निर्देश देगा.

अगर root_module_direct_deps में से कोई एक है, तो एक्सटेंशन का आकलन करने पर, चेतावनी और ठीक करने का निर्देश प्रिंट किया जाएगा.

अगर root_module_direct_deps और root_module_direct_dev_deps में से कोई एक बताया गया है, तो दूसरा भी तय होना चाहिए. इन दोनों पैरामीटर से तय की गई सूचियां अलग-अलग होनी चाहिए.

root_module_direct_deps और root_module_direct_dev_deps में से किसी एक को खास वैल्यू "all" पर सेट किया जा सकता है. इसे वैल्यू के तौर पर, एक्सटेंशन से जनरेट किए गए सभी रिपॉज़िटरी के नामों की सूची माना जाता है.

root_module_direct_dev_deps स्ट्रिंग या स्ट्रिंग या None का क्रम; डिफ़ॉल्ट तौर पर None
उन रिपॉज़िटरी के नाम जिन्हें एक्सटेंशन, रूट मॉड्यूल की सीधे तौर पर डिवेलपर डिपेंडेंसी मानता है. अगर रूट मॉड्यूल अतिरिक्त रिपॉज़िटरी इंपोर्ट करता है या use_extension(..., dev_dependency = True) के साथ बनाए गए एक्सटेंशन प्रॉक्सी पर use_repo के ज़रिए ये सभी डेटा स्टोर करने की जगह इंपोर्ट नहीं करता है, तो एक्सटेंशन का आकलन होने पर Basel एक चेतावनी प्रिंट कर देगा. साथ ही, उपयोगकर्ता को use_repo कॉल को अपने-आप ठीक करने के लिए bazel mod tidy चलाने के लिए निर्देश देगा.

अगर root_module_direct_deps और root_module_direct_dev_deps में से किसी एक की वैल्यू दी गई है, तो दूसरे की वैल्यू भी देनी होगी. इन दोनों पैरामीटर से तय की गई सूचियां अलग-अलग होनी चाहिए.

root_module_direct_deps और root_module_direct_dev_deps में से किसी एक को खास वैल्यू "all" पर सेट किया जा सकता है. इसे वैल्यू के तौर पर, एक्सटेंशन से जनरेट किए गए सभी रिपॉज़िटरी के नामों की सूची माना जाता है.

reproducible bool; डिफ़ॉल्ट तौर पर False
होता है इससे पता चलता है कि इस मॉड्यूल एक्सटेंशन से, पूरी तरह से दोबारा बनाने की सुविधा मिलती है. इसलिए, इसे लॉकफ़ाइल में सेव नहीं किया जाना चाहिए.

फ़ाइल

None module_ctx.file(path, content='', executable=True, legacy_utf8=True)

दिए गए कॉन्टेंट के साथ, रिपॉज़िटरी डायरेक्ट्री में फ़ाइल जनरेट करता है.

पैरामीटर

पैरामीटर ब्यौरा
path स्ट्रिंग; या लेबल; या पाथ; ज़रूरी
रिपॉज़िटरी डायरेक्ट्री के हिसाब से, बनाई जाने वाली फ़ाइल का पाथ.
content डिफ़ॉल्ट तौर पर, ''
वह फ़ाइल होती है जिसका कॉन्टेंट बनाना है. यह डिफ़ॉल्ट रूप से खाली होती है.
executable डिफ़ॉल्ट तौर पर True
है बनाई गई फ़ाइल पर, 'एक्सीक्यूटेबल' फ़्लैग सेट करें. यह डिफ़ॉल्ट रूप से 'सही' पर सेट होता है.
legacy_utf8 डिफ़ॉल्ट True
फ़ाइल के कॉन्टेंट को UTF-8 में बदलें. यह डिफ़ॉल्ट रूप से 'सही' पर सेट होता है. आने वाले वर्शन में, डिफ़ॉल्ट पैरामीटर बदल जाएगा और यह पैरामीटर हट जाएगा.

getenv

string module_ctx.getenv(name, default=None)

एनवायरमेंट वैरिएबल name का मान स्ट्रिंग के रूप में दिखाता है. अगर ऐसा नहीं है, तो यह default दिखाता है.

धीरे-धीरे डेटा इकट्ठा करते समय, name नाम वाले वैरिएबल की वैल्यू में कोई बदलाव करने पर, इस रिपॉज़िटरी को फिर से फ़ेच किया जाएगा.

पैरामीटर

पैरामीटर ब्यौरा
name string; ज़रूरी है
पसंदीदा एनवायरमेंट वैरिएबल का नाम
default string या None; डिफ़ॉल्ट तौर पर None
अगर `name` नहीं मिलता है, तो डिफ़ॉल्ट वैल्यू दिखाने के लिए
None को वापस किया जा सकता है.

is_dev_dependency

bool module_ctx.is_dev_dependency(tag)

यह बताता है कि devDependency = True के साथ use_extension कॉल के नतीजे में, दिया गया टैग तय किया गया था या नहीं.

पैरामीटर

पैरामीटर ब्यौरा
tag bazel_module_tag; ज़रूरी है
यह bazel_module.tags से मिला टैग है.

मॉड्यूल

list module_ctx.modules

बाहरी डिपेंडेंसी ग्राफ़ में मौजूद उन सभी Basel मॉड्यूल की एक सूची जो इस मॉड्यूल एक्सटेंशन का इस्तेमाल करते हैं. इनमें से हर मॉड्यूल, एक bazel_module ऑब्जेक्ट है, जो इस एक्सटेंशन के लिए तय किए गए सभी टैग दिखाता है. इस डिक्शनरी के दोहराए जाने का क्रम, रूट मॉड्यूल से शुरू होने वाली ब्रॉड-फ़र्स्ट सर्च जैसा ही होगा.

os

repository_os module_ctx.os

सिस्टम से जानकारी ऐक्सेस करने के लिए स्ट्रक्चर.

पाथ

path module_ctx.path(path)

किसी स्ट्रिंग, लेबल या पाथ से पाथ दिखाता है. अगर पाथ मिलता-जुलता है, तो इसका समाधान रिपॉज़िटरी डायरेक्ट्री से किया जाएगा. अगर पाथ कोई लेबल है, तो उससे जुड़ी फ़ाइल के पाथ पर ले जाया जाएगा. ध्यान दें कि रिमोट डेटा स्टोर करने की जगहों को, विश्लेषण के दौरान एक्ज़ीक्यूट किया जाता है. इसलिए, यह किसी टारगेट किए गए नतीजे के हिसाब से नहीं हो सकता. इसलिए, लेबल को किसी ऐसी फ़ाइल पर ले जाना चाहिए जो जनरेट नहीं हुई है. अगर पाथ कोई पाथ है, तो वह उस पाथ को वैसा ही दिखाएगा.

पैरामीटर

पैरामीटर ब्यौरा
path स्ट्रिंग; या लेबल; या पाथ; ज़रूरी है
वह स्ट्रिंग, लेबल या पाथ जिससे पाथ बनाना है

पढ़ा गया

string module_ctx.read(path, *, watch='auto')

फ़ाइल सिस्टम पर मौजूद किसी फ़ाइल के कॉन्टेंट को पढ़ता है.

पैरामीटर

पैरामीटर ब्यौरा
path string; या Label; या path; फ़ाइल का वह पाथ जिससे पढ़ना ज़रूरी है
.
watch डिफ़ॉल्ट रूप से, 'auto'
फ़ाइल को देखना है या नहीं. यह 'yes', 'no' या 'auto' स्ट्रिंग हो सकती है. 'हां' पास करना watch() विधि को तुरंत शुरू करने के समान है; 'नहीं' में पास करना फ़ाइल को देखने का प्रयास नहीं करता; 'ऑटो' पास करना फ़ाइल को देखने का केवल तभी प्रयास करेगा, जब ऐसा करना कानूनी हो (ज़्यादा जानकारी के लिए watch() दस्तावेज़ देखें.

report_progress

None module_ctx.report_progress(status='')

इस रिपॉज़िटरी या मॉड्यूल एक्सटेंशन को फ़ेच करने की प्रोग्रेस की स्थिति अपडेट करता है

पैरामीटर

पैरामीटर ब्यौरा
status स्ट्रिंग; डिफ़ॉल्ट तौर पर ''
है फ़ेच की प्रोग्रेस की मौजूदा स्थिति बताने वाली स्ट्रिंग

root_module_has_non_dev_dependency

bool module_ctx.root_module_has_non_dev_dependency

रूट मॉड्यूल इस एक्सटेंशन का इस्तेमाल गैर-डेवलपर डिपेंडेंसी के तौर पर करता है या नहीं.

देखें

None module_ctx.watch(path)

Bazel को दिए गए पाथ में हुए बदलावों को देखने के लिए कहता है. भले ही, वह पाथ मौजूद हो या नहीं या वह फ़ाइल हो या डायरेक्ट्री. फ़ाइल या डायरेक्ट्री में कोई भी बदलाव करने पर, डेटा स्टोर करने की इस जगह या मॉड्यूल एक्सटेंशन को अमान्य कर दिया जाएगा. इसकी वजह से, अगली बार इसे फिर से फ़ेच किया जाएगा या उसकी फिर से जांच की जाएगी.

"बदलाव" में, फ़ाइल के कॉन्टेंट में किए गए बदलाव शामिल हैं. ऐसा तब होता है, जब पाथ कोई फ़ाइल हो. अगर पाथ पहले फ़ाइल था और अब डायरेक्ट्री है या इसके उलट, तो भी "बदलाव" में शामिल किया जाता है. साथ ही, अगर पाथ मौजूद है या नहीं, तो भी "बदलाव" में शामिल किया जाता है. ध्यान दें कि अगर पाथ कोई डायरेक्ट्री है, तो इसमें डायरेक्ट्री में मौजूद किसी भी फ़ाइल में किए गए बदलाव शामिल नहीं होते. इसके लिए, path.readdir() का इस्तेमाल करें.

ध्यान दें कि फ़िलहाल फ़ेच किए जा रहे रेपो या मौजूदा मॉड्यूल एक्सटेंशन की काम करने वाली डायरेक्ट्री के अंदर पाथ को देखने की कोशिश करने पर गड़बड़ी दिखेगी. अगर कोई मॉड्यूल एक्सटेंशन, मौजूदा Bazel फ़ाइल फ़ोल्डर के बाहर का कोई पाथ देखने की कोशिश करता है, तो भी गड़बड़ी का मैसेज दिखेगा.

पैरामीटर

पैरामीटर ब्यौरा
path स्ट्रिंग; या लेबल; या पाथ; ज़रूरी
देखने के लिए फ़ाइल का पाथ.

कौनसा

path module_ctx.which(program)

इससे उस प्रोग्राम का पाथ मिलता है. अगर पाथ में कोई ऐसा प्रोग्राम नहीं है, तो None दिखता है.

पैरामीटर

पैरामीटर ब्यौरा
program ज़रूरी
पाथ में ढूंढने के लिए प्रोग्राम.
None को वापस किया जा सकता है.