कार्रवाइयां बनाने के लिए फ़ंक्शन उपलब्ध कराने वाला मॉड्यूल. ctx.actions
का इस्तेमाल करके, इस मॉड्यूल को ऐक्सेस करें.
सदस्य
- args
- declare_directory
- declare_file
- declare_symlink
- do_nothing
- expand_template
- run
- run_shell
- symlink
- template_dict
- लिखना
args
Args actions.args()
declare_directory
File actions.declare_directory(filename, *, sibling=None)
Args.add_all()
की मदद से, ऐक्शन कमांड में कॉन्टेंट को बड़ा किया जा सकता है. declare_directory के बड़े किए गए कॉन्टेंट में सिर्फ़ सामान्य फ़ाइलें और डायरेक्ट्री हो सकती हैं.
पैरामीटर
पैरामीटर | ब्यौरा |
---|---|
filename
|
स्ट्रिंग;
ज़रूरी है अगर कोई 'सिबलिंग' नहीं दिया गया है, तो मौजूदा पैकेज के हिसाब से नई डायरेक्ट्री का पाथ. अगर ऐसा नहीं है, तो फ़ाइल का बेस नेम ('सिबलिंग' किसी डायरेक्ट्री की जानकारी देता है). |
sibling
|
फ़ाइल या None ;
डिफ़ॉल्ट तौर पर None यह ऐसी फ़ाइल होती है जो नई डायरेक्ट्री में मौजूद होती है. फ़ाइल, मौजूदा पैकेज में होनी चाहिए. |
declare_file
File actions.declare_file(filename, *, sibling=None)
sibling
नहीं दिया गया है, तो फ़ाइल का नाम पैकेज डायरेक्ट्री के हिसाब से होता है. अगर sibling
दिया गया है, तो फ़ाइल sibling
की उसी डायरेक्ट्री में होती है. मौजूदा पैकेज के बाहर फ़ाइलें नहीं बनाई जा सकतीं.याद रखें कि फ़ाइल का एलान करने के अलावा, आपको एक ऐसी कार्रवाई भी अलग से बनानी होगी जो फ़ाइल को उत्सर्जित करती है. उस कार्रवाई को बनाने के लिए, कार्रवाई के कंस्ट्रक्शन फ़ंक्शन में दिखाया गया File
ऑब्जेक्ट पास करना होगा.
ध्यान दें कि पहले से तय की गई आउटपुट फ़ाइलों के लिए, इस फ़ंक्शन का इस्तेमाल करने की ज़रूरत नहीं है. इसके अलावा, ऐसा करना भी मुमकिन नहीं है. इसके बजाय, ctx.outputs
से उनके File
ऑब्जेक्ट पाए जा सकते हैं. इस्तेमाल का उदाहरण देखें.
पैरामीटर
पैरामीटर | ब्यौरा |
---|---|
filename
|
स्ट्रिंग;
ज़रूरी है अगर कोई 'सिबलिंग' नहीं दिया गया है, तो मौजूदा पैकेज के हिसाब से नई फ़ाइल का पाथ. अगर ऐसा नहीं है, तो फ़ाइल का बेस नेम ('सिबलिंग' से डायरेक्ट्री तय होती है). |
sibling
|
फ़ाइल या None ;
डिफ़ॉल्ट रूप से None वह फ़ाइल जो नई फ़ाइल के साथ एक ही डायरेक्ट्री में मौजूद हो. फ़ाइल, मौजूदा पैकेज में होनी चाहिए. |
declare_symlink
File actions.declare_symlink(filename, *, sibling=None)
पैरामीटर
पैरामीटर | ब्यौरा |
---|---|
filename
|
स्ट्रिंग;
ज़रूरी है अगर कोई 'सिबलिंग' नहीं दिया गया है, तो मौजूदा पैकेज के हिसाब से नए सिमलंक का पाथ. अगर ऐसा नहीं है, तो फ़ाइल का बेस नेम ('सिबलिंग' किसी डायरेक्ट्री की जानकारी देता है). |
sibling
|
फ़ाइल या None ;
डिफ़ॉल्ट तौर पर None यह ऐसी फ़ाइल होती है जो नए सिग्नललिंक की उसी डायरेक्ट्री में मौजूद होती है. |
do_nothing
None
actions.do_nothing(mnemonic, inputs=[])
पैरामीटर
पैरामीटर | ब्यौरा |
---|---|
mnemonic
|
string;
ज़रूरी है कार्रवाई का एक शब्द में ब्यौरा, जैसे कि CppCompile या GoLink. |
inputs
|
फ़ाइल या depset का क्रम;
डिफ़ॉल्ट [] है कार्रवाई की इनपुट फ़ाइलों की सूची. |
expand_template
None
actions.expand_template(template, output, substitutions={}, is_executable=False, computed_substitutions=unbound)
substitutions
डिक्शनरी का इस्तेमाल करके बदल दिया जाएगा. बदलावों को उसी क्रम में बदला जाएगा जिस क्रम में उन्हें तय किया गया है. जब भी टेंप्लेट में डिक्शनरी की कोई कुंजी दिखती है या किसी पहले बदलाव का नतीजा दिखता है, तो उसे उससे जुड़ी वैल्यू से बदल दिया जाता है. कुंजियों के लिए कोई खास सिंटैक्स नहीं है. उदाहरण के लिए, {KEY}
जैसे नामों के टकराव से बचने के लिए, कर्ली ब्रैकेट का इस्तेमाल किया जा सकता है. इस्तेमाल का उदाहरण देखें.
पैरामीटर
पैरामीटर | ब्यौरा |
---|---|
template
|
फ़ाइल;
ज़रूरी है टेंप्लेट फ़ाइल, जो UTF-8 कोड में बदली गई टेक्स्ट फ़ाइल होती है. |
output
|
फ़ाइल;
ज़रूरी है आउटपुट फ़ाइल, जो UTF-8 कोड में बदली गई टेक्स्ट फ़ाइल होती है. |
substitutions
|
dict;
डिफ़ॉल्ट {} है टेंप्लेट को बड़ा करते समय किए जाने वाले बदलाव. |
is_executable
|
bool;
डिफ़ॉल्ट रूप से False होता है क्या आउटपुट फ़ाइल को चलाया जा सकता है. |
computed_substitutions
|
TemplateDict;
डिफ़ॉल्ट तौर पर, यह unbound होता है टेंप्लेट को बड़ा करते समय, बदलाव करने के लिए. |
रन
None
actions.run(outputs, inputs=[], unused_inputs_list=None, executable, tools=unbound, arguments=[], mnemonic=None, progress_message=None, use_default_shell_env=False, env=None, execution_requirements=None, input_manifests=None, exec_group=None, shadowed_action=None, resource_set=None, toolchain=unbound)
पैरामीटर
पैरामीटर | ब्यौरा |
---|---|
outputs
|
फ़ाइल का क्रम;
ज़रूरी है कार्रवाई की आउटपुट फ़ाइलों की सूची. |
inputs
|
फ़ाइल या depset का क्रम;
डिफ़ॉल्ट तौर पर [] होता है कार्रवाई की इनपुट फ़ाइलों की सूची या depset. |
unused_inputs_list
|
फ़ाइल या None ;
डिफ़ॉल्ट तौर पर None ऐसी फ़ाइल जिसमें उन इनपुट की सूची होती है जिनका इस्तेमाल कार्रवाई में नहीं किया जाता. इस फ़ाइल का कॉन्टेंट (आम तौर पर कार्रवाई का एक आउटपुट), उन इनपुट फ़ाइलों की सूची से जुड़ा होता है जिनका इस्तेमाल कार्रवाई पूरी होने के दौरान नहीं किया गया था. इन फ़ाइलों में किए गए किसी भी बदलाव से, कार्रवाई के आउटपुट पर किसी भी तरह का असर नहीं पड़ना चाहिए. |
executable
|
फ़ाइल; या स्ट्रिंग; या FilesToRunProvider;
ज़रूरी है ऐक्शन से जिस फ़ाइल को चलाया जाना है. |
tools
|
sequence या depset;
डिफ़ॉल्ट रूप से unbound होता है कार्रवाई के लिए ज़रूरी टूल की सूची या depset. टूल, अतिरिक्त रनफ़ाइलों के साथ इनपुट होते हैं. ये ऐक्शन के लिए अपने-आप उपलब्ध हो जाते हैं. सूची उपलब्ध कराने पर, यह Files, FilesToRunProvider इंस्टेंस या Files के डेपसेट का अलग-अलग तरह का कलेक्शन हो सकता है. सीधे सूची में शामिल और ctx.executable से आने वाली फ़ाइलों की रनफ़ाइलें अपने-आप जुड़ जाएंगी. अगर कोई डिप्सेट दिया जाता है, तो उसमें सिर्फ़ फ़ाइलें होनी चाहिए. दोनों मामलों में, depset में मौजूद फ़ाइलों को runfile के लिए, ctx.executable के साथ क्रॉस-रेफ़रंस नहीं किया जाता. |
arguments
|
sequence;
डिफ़ॉल्ट रूप से [] होता है ऐक्शन के कमांड लाइन आर्ग्युमेंट. यह स्ट्रिंग या actions.args() ऑब्जेक्ट की सूची होनी चाहिए.
|
mnemonic
|
स्ट्रिंग या None ;
डिफ़ॉल्ट रूप से None कार्रवाई का एक शब्द का ब्यौरा, जैसे कि CppCompile या GoLink. |
progress_message
|
स्ट्रिंग या None ;
डिफ़ॉल्ट तौर पर None बिल्ड के दौरान उपयोगकर्ता को दिखाने के लिए प्रोग्रेस मैसेज. उदाहरण के लिए, "foo.o बनाने के लिए foo.cc को कंपाइल किया जा रहा है". मैसेज में %{label} , %{input} या %{output} पैटर्न हो सकते हैं. इन्हें लेबल स्ट्रिंग, पहले इनपुट या आउटपुट के पाथ से बदला जाता है. स्टैटिक स्ट्रिंग के बजाय पैटर्न का इस्तेमाल करें, क्योंकि ये ज़्यादा असरदार होते हैं.
|
use_default_shell_env
|
bool;
डिफ़ॉल्ट रूप से False होता है क्या ऐक्शन को डिफ़ॉल्ट शेल एनवायरमेंट का इस्तेमाल करना चाहिए. इसमें, ओएस पर निर्भर कुछ वैरिएबल के साथ-साथ --action_env से सेट किए गए वैरिएबल भी शामिल होते हैं.अगर |
env
|
dict या None ;
डिफ़ॉल्ट None है एनवायरमेंट वैरिएबल की डिक्शनरी सेट करता है. अगर |
execution_requirements
|
dict या None ;
डिफ़ॉल्ट None है कार्रवाई को शेड्यूल करने के लिए जानकारी. काम की कुंजियों के लिए, टैग देखें. |
input_manifests
|
sequence या None ;
डिफ़ॉल्ट तौर पर None लेगसी आर्ग्युमेंट. ध्यान नहीं दिया गया. |
exec_group
|
स्ट्रिंग या None ;
डिफ़ॉल्ट None है यह कार्रवाई, दिए गए एक्सेक्यूशन ग्रुप के एक्सेक्यूशन प्लैटफ़ॉर्म पर की जाती है. अगर कोई नहीं है, तो टारगेट के डिफ़ॉल्ट रनटाइम प्लैटफ़ॉर्म का इस्तेमाल किया जाता है. |
shadowed_action
|
कार्रवाई;
डिफ़ॉल्ट रूप से None होता है कार्रवाई की इनपुट सूची और एनवायरमेंट में जोड़े गए, शैडो की गई कार्रवाई के इनपुट और एनवायरमेंट का इस्तेमाल करके कार्रवाई को चलाता है. ऐक्शन एनवायरमेंट, शैडो की गई किसी भी ऐक्शन के एनवायरमेंट वैरिएबल को ओवरराइट कर सकता है. अगर कोई नहीं, तो सिर्फ़ ऐक्शन के इनपुट और दिए गए एनवायरमेंट का इस्तेमाल किया जाता है. |
resource_set
|
callable; या None ;
डिफ़ॉल्ट तौर पर None यह एक कॉलबैक फ़ंक्शन है, जो रिसॉर्स सेट की डिक्शनरी दिखाता है. इसका इस्तेमाल, इस ऐक्शन को स्थानीय तौर पर चलाने पर, रिसॉर्स के इस्तेमाल का अनुमान लगाने के लिए किया जाता है. यह फ़ंक्शन दो पोज़िशनल आर्ग्युमेंट स्वीकार करता है: ओएस का नाम बताने वाली स्ट्रिंग (उदाहरण के लिए, "osx") और कार्रवाई के इनपुट की संख्या बताने वाला पूर्णांक. दी गई डिक्शनरी में ये एंट्री हो सकती हैं. इनमें से हर एंट्री, फ़्लोट या इंट हो सकती है:
अगर यह पैरामीटर कॉलबैक, टॉप-लेवल का होना चाहिए. इसमें लैम्ब्डा और नेस्ट किए गए फ़ंक्शन इस्तेमाल नहीं किए जा सकते. |
toolchain
|
लेबल; या स्ट्रिंग; या None ;
डिफ़ॉल्ट तौर पर unbound इस कार्रवाई में इस्तेमाल किए गए टूल या एक्सीक्यूटेबल का टूलचेन टाइप. अगर कोई टूल और एक्सीक्यूटेबल, टूलचेन से नहीं आ रहा है, तो इस पैरामीटर को `None` पर सेट करें. अगर किसी टूलचेन से, एक्ज़ीक्यूटेबल और टूल मिल रहे हैं, तो टूलचेन टाइप सेट करना ज़रूरी है, ताकि कार्रवाई सही प्लैटफ़ॉर्म पर की जा सके. ध्यान दें कि इस कार्रवाई को बनाने वाले नियम को अपने 'rule()' फ़ंक्शन में इस टूलचेन की जानकारी देनी होगी. अगर `toolchain` और `exec_group` पैरामीटर, दोनों सेट हैं, तो `exec_group` का इस्तेमाल किया जाएगा. अगर `exec_group` में एक ही टूलचेन नहीं बताया गया है, तो गड़बड़ी का मैसेज दिखता है. |
run_shell
None
actions.run_shell(outputs, inputs=[], tools=unbound, arguments=[], mnemonic=None, command, progress_message=None, use_default_shell_env=False, env=None, execution_requirements=None, input_manifests=None, exec_group=None, shadowed_action=None, resource_set=None, toolchain=unbound)
पैरामीटर
पैरामीटर | ब्यौरा |
---|---|
outputs
|
फ़ाइल का क्रम;
ज़रूरी है कार्रवाई की आउटपुट फ़ाइलों की सूची. |
inputs
|
फ़ाइल या depset का क्रम;
डिफ़ॉल्ट तौर पर [] होता है कार्रवाई की इनपुट फ़ाइलों की सूची या depset. |
tools
|
फ़ाइल या depset का क्रम;
डिफ़ॉल्ट रूप से unbound होता है कार्रवाई के लिए ज़रूरी किसी भी टूल की सूची या depset. टूल, अतिरिक्त रनफ़ाइलों के साथ इनपुट होते हैं. ये ऐक्शन के लिए अपने-आप उपलब्ध हो जाते हैं. इस सूची में Files या FilesToRunProvider के इंस्टेंस शामिल हो सकते हैं. |
arguments
|
sequence;
डिफ़ॉल्ट रूप से [] होता है ऐक्शन के कमांड लाइन आर्ग्युमेंट. यह स्ट्रिंग या actions.args() ऑब्जेक्ट की सूची होनी चाहिए.Bazel, इस एट्रिब्यूट में मौजूद एलिमेंट को आर्ग्युमेंट के तौर पर कमांड को पास करता है. कमांड, अगर |
mnemonic
|
स्ट्रिंग या None ;
डिफ़ॉल्ट रूप से None कार्रवाई का एक शब्द का ब्यौरा, जैसे कि CppCompile या GoLink. |
command
|
स्ट्रिंग या स्ट्रिंग का क्रम;
शेल कमांड को चलाने के लिए ज़रूरी है. यह एक स्ट्रिंग (प्राथमिकता) या स्ट्रिंग का क्रम (इस्तेमाल से रोका गया) हो सकता है. अगर (अब काम नहीं करता) अगर Bazel, निर्देश को लागू करने के लिए उसी शेल का इस्तेमाल करता है जिसका इस्तेमाल genrules के लिए किया जाता है. |
progress_message
|
स्ट्रिंग या None ;
डिफ़ॉल्ट तौर पर None बिल्ड के दौरान उपयोगकर्ता को दिखाने के लिए प्रोग्रेस मैसेज. उदाहरण के लिए, "foo.o बनाने के लिए foo.cc को कंपाइल किया जा रहा है". मैसेज में %{label} , %{input} या %{output} पैटर्न हो सकते हैं. इन्हें लेबल स्ट्रिंग, पहले इनपुट या आउटपुट के पाथ से बदला जाता है. स्टैटिक स्ट्रिंग के बजाय पैटर्न का इस्तेमाल करें, क्योंकि ये ज़्यादा असरदार होते हैं.
|
use_default_shell_env
|
bool;
डिफ़ॉल्ट रूप से False होता है क्या ऐक्शन को डिफ़ॉल्ट शेल एनवायरमेंट का इस्तेमाल करना चाहिए. इसमें, ओएस पर निर्भर कुछ वैरिएबल के साथ-साथ --action_env से सेट किए गए वैरिएबल भी शामिल होते हैं.अगर |
env
|
dict या None ;
डिफ़ॉल्ट None है एनवायरमेंट वैरिएबल की डिक्शनरी सेट करता है. अगर |
execution_requirements
|
dict या None ;
डिफ़ॉल्ट None है कार्रवाई को शेड्यूल करने के लिए जानकारी. काम की कुंजियों के लिए, टैग देखें. |
input_manifests
|
sequence या None ;
डिफ़ॉल्ट तौर पर None लेगसी आर्ग्युमेंट. ध्यान नहीं दिया गया. |
exec_group
|
स्ट्रिंग या None ;
डिफ़ॉल्ट None है यह कार्रवाई, दिए गए एक्सेक्यूशन ग्रुप के एक्सेक्यूशन प्लैटफ़ॉर्म पर की जाती है. अगर कोई नहीं है, तो टारगेट के डिफ़ॉल्ट रनटाइम प्लैटफ़ॉर्म का इस्तेमाल किया जाता है. |
shadowed_action
|
कार्रवाई;
डिफ़ॉल्ट रूप से None होता है यह कार्रवाई की इनपुट सूची में जोड़े गए, शैडो की गई कार्रवाई के खोजे गए इनपुट का इस्तेमाल करके कार्रवाई को चलाता है. अगर कोई नहीं है, तो सिर्फ़ ऐक्शन के इनपुट का इस्तेमाल किया जाता है. |
resource_set
|
callable; या None ;
डिफ़ॉल्ट तौर पर None स्थानीय तौर पर चलाए जाने पर, संसाधन के इस्तेमाल का अनुमान लगाने के लिए कॉलबैक फ़ंक्शन. ctx.actions.run() देखें.
|
toolchain
|
लेबल; या स्ट्रिंग; या None ;
डिफ़ॉल्ट तौर पर unbound इस कार्रवाई में इस्तेमाल किए गए टूल या एक्सीक्यूटेबल का टूलचेन टाइप. अगर कोई टूल और एक्सीक्यूटेबल, टूलचेन से नहीं आ रहा है, तो इस पैरामीटर को `None` पर सेट करें. अगर किसी टूलचेन से, एक्ज़ीक्यूटेबल और टूल मिल रहे हैं, तो टूलचेन टाइप सेट करना ज़रूरी है, ताकि कार्रवाई सही प्लैटफ़ॉर्म पर की जा सके. ध्यान दें कि इस कार्रवाई को बनाने वाले नियम को अपने 'rule()' फ़ंक्शन में इस टूलचेन की जानकारी देनी होगी. अगर `toolchain` और `exec_group` पैरामीटर, दोनों सेट हैं, तो `exec_group` का इस्तेमाल किया जाएगा. अगर `exec_group` में एक ही टूलचेन नहीं बताया गया है, तो गड़बड़ी का मैसेज दिखता है. |
सिमलिंक
None
actions.symlink(output, target_file=None, target_path=None, is_executable=False, progress_message=None)
इस फ़ंक्शन को target_file
या target_path
में से किसी एक के साथ ही इस्तेमाल किया जाना चाहिए.
target_file
का इस्तेमाल करते समय, declare_file()
या declare_directory()
के साथ output
का एलान करें और target_file
के टाइप से मैच करें. इससे सिमलिंक, target_file
पर ले जाता है. जब भी सिमलिन्क का टारगेट या उसका कॉन्टेंट बदलता है, तो Bazel इस कार्रवाई के आउटपुट को अमान्य कर देता है.
इसके अलावा, target_path
का इस्तेमाल करते समय, declare_symlink()
के साथ output
का एलान करें. इस मामले में, सिमलंक target_path
पर ले जाता है. Bazel, कभी भी सिर्फ़ लिंक को हल नहीं करता. इस कार्रवाई का आउटपुट सिर्फ़ तब अमान्य होता है, जब सिर्फ़ लिंक के टेक्स्ट कॉन्टेंट (यानी readlink()
की वैल्यू) में बदलाव होता है. खास तौर पर, इसका इस्तेमाल डैंगलिंग सिंबललिंक बनाने के लिए किया जा सकता है.
पैरामीटर
पैरामीटर | ब्यौरा |
---|---|
output
|
फ़ाइल;
ज़रूरी है इस कार्रवाई का आउटपुट. |
target_file
|
फ़ाइल या None ;
डिफ़ॉल्ट रूप से None वह फ़ाइल जिस पर आउटपुट सिमलिंक ले जाएगा. |
target_path
|
स्ट्रिंग या None ;
डिफ़ॉल्ट रूप से None वह सटीक पाथ जिस पर आउटपुट सिर्फ़लिंक करेगा. इसमें नॉर्मलाइज़ेशन या कोई अन्य प्रोसेस लागू नहीं की जाती. |
is_executable
|
bool;
डिफ़ॉल्ट वैल्यू False है इसका इस्तेमाल सिर्फ़ target_file के साथ किया जा सकता है, target_path के साथ नहीं. अगर यह सही है, तो कार्रवाई करने पर target_file के पाथ की जांच की जाती है, ताकि यह पक्का किया जा सके कि इसे चलाया जा सकता है. अगर ऐसा नहीं है, तो गड़बड़ी की सूचना दी जाती है. is_executable को 'गलत है' पर सेट करने का मतलब यह नहीं है कि टारगेट को लागू नहीं किया जा सकता. इसका मतलब सिर्फ़ यह है कि उसकी पुष्टि नहीं की गई है.
|
progress_message
|
स्ट्रिंग या None ;
डिफ़ॉल्ट तौर पर None बिल्ड के दौरान उपयोगकर्ता को दिखाने के लिए प्रोग्रेस मैसेज. |
template_dict
TemplateDict actions.template_dict()
मेरी मदद करो
None
actions.write(output, content, is_executable=False)
expand_template
का इस्तेमाल करें.
पैरामीटर
पैरामीटर | ब्यौरा |
---|---|
output
|
फ़ाइल;
ज़रूरी है आउटपुट फ़ाइल. |
content
|
string या Args;
ज़रूरी फ़ाइल का कॉन्टेंट. यह स्ट्रिंग या actions.args() ऑब्जेक्ट हो सकता है.
|
is_executable
|
bool;
डिफ़ॉल्ट रूप से False होता है क्या आउटपुट फ़ाइल को चलाया जा सकता है. |