डेटा स्टोर करने की स्थानीय जगह के नियम

ये फ़ंक्शन @bazel_tools//tools/build_defs/repo:local.bzl से लोड किए जा सकते हैं.

लोकल फ़ाइल सिस्टम में मौजूद डायरेक्ट्री को रिपॉज़िटरी के तौर पर उपलब्ध कराने के नियम.

सेटअप

मॉड्यूल एक्सटेंशन में इन नियमों का इस्तेमाल करने के लिए, उन्हें अपनी .bzl फ़ाइल में लोड करें. इसके बाद, उन्हें अपने एक्सटेंशन के लागू करने वाले फ़ंक्शन से कॉल करें. उदाहरण के लिए, local_repository का इस्तेमाल करने के लिए:

load("@bazel_tools//tools/build_defs/repo:local.bzl", "local_repository")

def _my_extension_impl(mctx):
  local_repository(name = "foo", path = "foo")

my_extension = module_extension(implementation = _my_extension_impl)

इसके अलावा, use_repo_rule की मदद से, अपनी MODULE.bazel फ़ाइल में इन repo नियमों को सीधे तौर पर कॉल किया जा सकता है:

local_repository = use_repo_rule("@bazel_tools//tools/build_defs/repo:local.bzl", "local_repository")
local_repository(name = "foo", path = "foo")

local_repository

load("@bazel//tools/build_defs/repo:local.bzl", "local_repository")

local_repository(name, path, repo_mapping)

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

एट्रिब्यूट

name नाम; यह ज़रूरी है

इस रिपॉज़िटरी के लिए कोई यूनीक नाम.

path स्ट्रिंग; ज़रूरी है

उस डायरेक्ट्री का पाथ जिसे रिपॉज़िटरी के तौर पर उपलब्ध कराना है. पाथ, वर्कस्पेस रूट के हिसाब से ऐब्सलूट या रिलेटिव हो सकता है.

repo_mapping डिकशनरी: स्ट्रिंग -> स्ट्रिंग; ज़रूरी नहीं

सिर्फ़ `WORKSPACE` कॉन्टेक्स्ट में: लोकल डेटा स्टोर करने की जगह के नाम से ग्लोबल डेटा स्टोर करने की जगह के नाम में बदलने वाली डिक्शनरी. इससे, इस रिपॉज़िटरी की डिपेंडेंसी के लिए फ़ाइल फ़ोल्डर डिपेंडेंसी रिज़ॉल्यूशन को कंट्रोल किया जा सकता है. उदाहरण के लिए, "@foo": "@bar" वाली एंट्री से पता चलता है कि इस रिपॉज़िटरी में, किसी भी समय `@foo` पर निर्भरता हो सकती है. जैसे, `@foo//some:target` पर निर्भरता. यह असल में, दुनिया भर में बताए गए `@bar` (`@bar//some:target`) में उस निर्भरता को हल करनी चाहिए. यह एट्रिब्यूट, `MODULE.bazel` कॉन्टेक्स्ट में काम नहीं करता. ऐसा तब होता है, जब मॉड्यूल एक्सटेंशन के लागू करने वाले फ़ंक्शन में रिपॉज़िटरी नियम को लागू किया जाता है.

new_local_repository

load("@bazel//tools/build_defs/repo:local.bzl", "new_local_repository")

new_local_repository(name, build_file, build_file_content, path, repo_mapping)

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

एट्रिब्यूट

name नाम; ज़रूरी है

डेटा स्टोर करने की इस जगह के लिए यूनीक नाम.

build_file लेबल; ज़रूरी नहीं

इस रिपॉज़िटरी के लिए, BUILD फ़ाइल के तौर पर इस्तेमाल की जाने वाली फ़ाइल. `build_file` और `build_file_content` में से किसी एक की वैल्यू देना ज़रूरी है. इस लेबल से जोड़ी गई फ़ाइल का नाम BUILD होना ज़रूरी नहीं है. हालांकि, ऐसा किया जा सकता है. असल BUILD फ़ाइलों से इसे अलग करने के लिए, `BUILD.new-repo-name` जैसा कोई नाम इस्तेमाल किया जा सकता है.

build_file_content स्ट्रिंग; ज़रूरी नहीं

इस रिपॉज़िटरी के लिए बनाई जाने वाली BUILD फ़ाइल का कॉन्टेंट. `build_file` और `build_file_content` में से किसी एक की वैल्यू देना ज़रूरी है.

path स्ट्रिंग; आवश्यक है

डायरेक्ट्री के लिए पाथ, जिसे रेपो के तौर पर उपलब्ध कराना है. पाथ निरपेक्ष या फ़ाइल फ़ोल्डर के रूट से मिलता-जुलता हो सकता है.

repo_mapping डिकशनरी: स्ट्रिंग -> स्ट्रिंग; ज़रूरी नहीं

सिर्फ़ `WORKSPACE` कॉन्टेक्स्ट में: लोकल डेटा स्टोर करने की जगह के नाम से ग्लोबल डेटा स्टोर करने की जगह के नाम में बदलने वाली डिक्शनरी. इससे, इस रिपॉज़िटरी की डिपेंडेंसी के लिए, वर्कस्पेस डिपेंडेंसी रिज़ॉल्यूशन को कंट्रोल किया जा सकता है. उदाहरण के लिए, "@foo": "@bar" वाली एंट्री से पता चलता है कि इस रिपॉज़िटरी में, किसी भी समय `@foo` पर निर्भरता हो सकती है. जैसे, `@foo//some:target` पर निर्भरता. यह असल में, दुनिया भर में बताए गए `@bar` (`@bar//some:target`) में उस निर्भरता को हल करनी चाहिए. यह एट्रिब्यूट, `MODULE.bazel` कॉन्टेक्स्ट में काम नहीं करता. ऐसा तब होता है, जब मॉड्यूल एक्सटेंशन के लागू करने वाले फ़ंक्शन में रिपॉज़िटरी नियम को लागू किया जाता है.