मॉड्यूल_टैब

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

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

execute

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 एक चेतावनी प्रिंट करेगा. साथ ही, उपयोगकर्ताओं को bazel mod tidy कॉल अपने-आप ठीक करने के लिए निर्देश देगा.use_repo

अगर 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_repo की मदद से, use_extension(..., dev_dependency = True) की मदद से बनाए गए एक्सटेंशन प्रॉक्सी पर इन सभी डेटा स्टोर करने की जगहों को इंपोर्ट नहीं करता है, तो एक्सटेंशन का आकलन करते समय, Bazel एक चेतावनी प्रिंट करेगा. साथ ही, उपयोगकर्ता को bazel mod tidy चलाने का निर्देश देगा, ताकि वह use_repo कॉल अपने-आप ठीक हो जाए.

अगर 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 string; या लेबल; या पाथ; बनाने के लिए फ़ाइल का पाथ ज़रूरी
है, जो रिपॉज़िटरी डायरेक्ट्री से जुड़ा होता है.
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

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

os

repository_os module_ctx.os

सिस्टम से जानकारी ऐक्सेस करने का निर्देश.

पाथ

path module_ctx.path(path)

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

पैरामीटर

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

पढ़ना

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

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

पैरामीटर

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

report_progress

None module_ctx.report_progress(status='')

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

पैरामीटर

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

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 string; या लेबल; या पाथ; देखने के लिए फ़ाइल का पाथ
ज़रूरी है.

कौनसा

path module_ctx.which(program)

पाथ में ऐसा कोई प्रोग्राम न होने पर, इससे जुड़े प्रोग्राम का पाथ दिखाता है या 'कोई नहीं' दिखाता है.

पैरामीटर

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