कार्रवाइयां

समस्या की शिकायत करें सोर्स देखें ठीक 24/}20} 7.3 · 7.2 · 7.1 · 7.0 · 6.5

कार्रवाइयां बनाने के लिए फ़ंक्शन उपलब्ध कराने वाला मॉड्यूल. ctx.actions का इस्तेमाल करके, इस मॉड्यूल को ऐक्सेस करें.

सदस्य

आर्ग्युमेंट

Args actions.args()

यह फ़ंक्शन आपको ऐसा Args ऑब्जेक्ट दिखाता है जिसका इस्तेमाल, मेमोरी कम करने वाली कमांड लाइन बनाने के लिए किया जा सकता है.

declare_directory

File actions.declare_directory(filename, *, sibling=None)

यह एलान करता है कि नियम या पहलू, मौजूदा पैकेज में दिए गए नाम से एक डायरेक्ट्री बनाता है. आपको एक ऐसी कार्रवाई बनानी होगी जो डायरेक्ट्री जनरेट करती हो. डायरेक्ट्री के कॉन्टेंट को Starlark से सीधे तौर पर ऐक्सेस नहीं किया जा सकता. हालांकि, Args.add_all() की मदद से, ऐक्शन कमांड में कॉन्टेंट को बड़ा किया जा सकता है. किसी desc_directory के बड़े किए गए कॉन्टेंट में सिर्फ़ सामान्य फ़ाइलें और डायरेक्ट्री ही शामिल की जा सकती हैं.

पैरामीटर

पैरामीटर ब्यौरा
filename string; ज़रूरी है
अगर कोई 'सिबलिंग' नहीं दिया गया है, तो मौजूदा पैकेज के हिसाब से नई डायरेक्ट्री का पाथ. अगर ऐसा नहीं है, तो फ़ाइल का बेस नेम ('सिबलिंग' किसी डायरेक्ट्री की जानकारी देता है).
sibling फ़ाइल या None; डिफ़ॉल्ट तौर पर None
यह एक ऐसी फ़ाइल होती है जो नई डायरेक्ट्री में मौजूद होती है. फ़ाइल, मौजूदा पैकेज में होनी चाहिए.

declare_file

File actions.declare_file(filename, *, sibling=None)

यह बताता है कि नियम या आसपेक्ट, दिए गए फ़ाइल नाम के साथ एक फ़ाइल बनाता है. अगर sibling नहीं दिया गया है, तो फ़ाइल का नाम पैकेज डायरेक्ट्री के हिसाब से होता है. अगर sibling दिया गया है, तो फ़ाइल sibling की उसी डायरेक्ट्री में होती है. फ़ाइलों को मौजूदा पैकेज के बाहर नहीं बनाया जा सकता.

याद रखें कि किसी फ़ाइल के बारे में जानकारी देने के अलावा, आपको अलग से ऐसी कार्रवाई बनानी होगी जिससे फ़ाइल में कार्बन का उत्सर्जन होता हो. उस कार्रवाई को बनाने के लिए, कार्रवाई के कंस्ट्रक्शन फ़ंक्शन में दिखाया गया File ऑब्जेक्ट पास करना होगा.

ध्यान दें कि पहले से तय की गई आउटपुट फ़ाइलों का एलान, इस फ़ंक्शन का इस्तेमाल करके नहीं किया जा सकता. साथ ही, इनका एलान भी नहीं किया जा सकता. इसके बजाय, ctx.outputs से उनके File ऑब्जेक्ट पाए जा सकते हैं. इस्तेमाल का उदाहरण देखें.

पैरामीटर

पैरामीटर ब्यौरा
filename स्ट्रिंग; ज़रूरी है
अगर कोई 'सिबलिंग' नहीं दिया गया है, तो मौजूदा पैकेज के हिसाब से नई फ़ाइल का पाथ. ऐसा नहीं होने पर, फ़ाइल का बेस नाम ('सिबलिंग', डायरेक्ट्री तय करता है).
sibling फ़ाइल या None; डिफ़ॉल्ट रूप से None
ऐसी फ़ाइल जो नई फ़ाइल के साथ एक ही डायरेक्ट्री में मौजूद हो. फ़ाइल, मौजूदा पैकेज में होनी चाहिए.

File actions.declare_symlink(filename, *, sibling=None)

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

पैरामीटर

पैरामीटर ब्यौरा
filename string; ज़रूरी है
अगर कोई 'सिबलिंग' नहीं दिया गया है, तो मौजूदा पैकेज के हिसाब से नए सिमलिंक का पाथ. अगर ऐसा नहीं है, तो फ़ाइल का बेस नेम ('सिबलिंग' किसी डायरेक्ट्री की जानकारी देता है).
sibling फ़ाइल या None; डिफ़ॉल्ट तौर पर None
यह एक ऐसी फ़ाइल होती है जो नए सिग्नललिंक की उसी डायरेक्ट्री में मौजूद होती है.

do_nothing

None actions.do_nothing(mnemonic, inputs=[])

यह एक खाली ऐक्शन बनाता है, जो न तो कोई कमांड लागू करता है और न ही कोई आउटपुट देता है. हालांकि, यह 'अतिरिक्त ऐक्शन' डालने के लिए काम का है.

पैरामीटर

पैरामीटर ब्यौरा
mnemonic string; ज़रूरी है
कार्रवाई का एक शब्द में ब्यौरा, जैसे कि CppCompile या GoLink.
inputs फ़ाइल का क्रम या डिप्सेट; डिफ़ॉल्ट []
कार्रवाई की इनपुट फ़ाइलों की सूची है.

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 File; या string; या FilesToRunProvider; ज़रूरी
कार्रवाई से कॉल की जाने वाली एक्ज़ीक्यूटेबल फ़ाइल.
tools sequence या depset; डिफ़ॉल्ट रूप से unbound
होता है कार्रवाई के लिए ज़रूरी टूल की सूची या depset. टूल, अतिरिक्त रनफ़ाइलों के साथ इनपुट होते हैं. ये ऐक्शन के लिए अपने-आप उपलब्ध हो जाते हैं. सूची उपलब्ध कराने पर, यह Files, FilesToRunProvider इंस्टेंस या Files के डेपसेट का अलग-अलग तरह का कलेक्शन हो सकता है. सीधे सूची में मौजूद और ctx.executable से आने वाली फ़ाइलों की रनफ़ाइलें अपने-आप जुड़ जाएंगी. जब डिप्सेट दिया जाता है, तो उसमें सिर्फ़ Files ही शामिल होना चाहिए. दोनों मामलों में, depset में मौजूद फ़ाइलों को runfile के लिए, ctx.executable के साथ क्रॉस-रेफ़रंस नहीं किया जाता.
arguments sequence; डिफ़ॉल्ट रूप से []
होता है ऐक्शन के कमांड लाइन आर्ग्युमेंट. यह स्ट्रिंग या actions.args() ऑब्जेक्ट की सूची होनी चाहिए.
mnemonic स्ट्रिंग या None; डिफ़ॉल्ट रूप से None
कार्रवाई का एक शब्द का ब्यौरा, जैसे कि CppCompile या GoLink.
progress_message string; या None; डिफ़ॉल्ट रूप से यह None
प्रोग्रेस मैसेज होता है, जिसे बिल्ड के दौरान उपयोगकर्ता को दिखाया जाता है. उदाहरण के लिए, "foo.o बनाने के लिए foo.cc को कंपाइल किया जा रहा है". मैसेज में %{label}, %{input} या %{output} पैटर्न हो सकते हैं. इन्हें लेबल स्ट्रिंग, पहले इनपुट या आउटपुट के पाथ से बदला जाता है. स्टैटिक स्ट्रिंग के बजाय पैटर्न का इस्तेमाल करें, क्योंकि पहली स्ट्रिंग ज़्यादा असरदार होती हैं.
use_default_shell_env bool; डिफ़ॉल्ट वैल्यू False है
कार्रवाई को डिफ़ॉल्ट शेल एनवायरमेंट का इस्तेमाल करना चाहिए या नहीं. इसमें कुछ ओएस (ओएस) डिपेंडेंट वैरिएबल के साथ-साथ --action_env के ज़रिए सेट किए गए वैरिएबल होते हैं.

अगर use_default_shell_env और env, दोनों को True पर सेट किया जाता है, तो --incompatible_merge_fixed_and_default_shell_env चालू होने पर (डिफ़ॉल्ट), env में सेट की गई वैल्यू, शेल के डिफ़ॉल्ट एनवायरमेंट को बदल देंगी. अगर फ़्लैग चालू नहीं है, तो env को अनदेखा कर दिया जाता है.

env dict; या None; डिफ़ॉल्ट रूप से None
एनवायरमेंट वैरिएबल की डिक्शनरी को सेट करता है.

अगर use_default_shell_env और env, दोनों को True पर सेट किया जाता है, तो --incompatible_merge_fixed_and_default_shell_env चालू होने पर (डिफ़ॉल्ट), env में सेट की गई वैल्यू, शेल के डिफ़ॉल्ट एनवायरमेंट को बदल देंगी. अगर फ़्लैग चालू नहीं है, तो env को अनदेखा कर दिया जाता है.

execution_requirements dict या None; डिफ़ॉल्ट None
है कार्रवाई को शेड्यूल करने के लिए जानकारी. काम की कुंजियों के लिए, टैग देखें.
input_manifests sequence या None; डिफ़ॉल्ट तौर पर None
लेगसी आर्ग्युमेंट. ध्यान नहीं दिया गया.
exec_group स्ट्रिंग या None; डिफ़ॉल्ट None
है यह कार्रवाई, दिए गए एक्सेक्यूशन ग्रुप के एक्सेक्यूशन प्लैटफ़ॉर्म पर की जाती है. अगर कोई नहीं है, तो टारगेट के डिफ़ॉल्ट रनटाइम प्लैटफ़ॉर्म का इस्तेमाल किया जाता है.
shadowed_action कार्रवाई; डिफ़ॉल्ट रूप से None
होता है कार्रवाई की इनपुट सूची और एनवायरमेंट में जोड़े गए, शैडो की गई कार्रवाई के इनपुट और एनवायरमेंट का इस्तेमाल करके कार्रवाई को चलाता है. कार्रवाई एनवायरमेंट, शैडो की गई किसी भी कार्रवाई के एनवायरमेंट वैरिएबल को ओवरराइट कर सकता है. अगर कोई नहीं है, तो सिर्फ़ ऐक्शन के इनपुट और दिए गए एनवायरमेंट का इस्तेमाल किया जाता है.
resource_set callable; या None; डिफ़ॉल्ट तौर पर None
यह एक कॉलबैक फ़ंक्शन है, जो रिसॉर्स सेट की डिक्शनरी दिखाता है. इसका इस्तेमाल, इस ऐक्शन को स्थानीय तौर पर चलाने पर, रिसॉर्स के इस्तेमाल का अनुमान लगाने के लिए किया जाता है.

यह फ़ंक्शन दो पोज़िशनल आर्ग्युमेंट स्वीकार करता है: ओएस का नाम बताने वाली स्ट्रिंग (उदाहरण के लिए, "osx") और कार्रवाई के इनपुट की संख्या बताने वाला पूर्णांक. लौटाए गए शब्दकोश में निम्न प्रविष्टियां हो सकती हैं, जिनमें से प्रत्येक फ़्लोट या पूर्णांक हो सकती है:

  • "cpu": सीपीयू की संख्या; डिफ़ॉल्ट तौर पर 1
  • "memory": एमबी में; डिफ़ॉल्ट 250
  • "local_test": स्थानीय जांचों की संख्या; डिफ़ॉल्ट 1

अगर यह पैरामीटर None पर सेट है या --experimental_action_resource_set गलत है, तो डिफ़ॉल्ट वैल्यू का इस्तेमाल किया जाता है.

कॉलबैक टॉप-लेवल का होना चाहिए. इसमें लैम्ब्डा और नेस्ट किए गए फ़ंक्शन इस्तेमाल नहीं किए जा सकते.

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 फ़ाइल का क्रम या डिप्सेट; डिफ़ॉल्ट []
कार्रवाई की इनपुट फ़ाइलों की सूची या डेसेट है.
tools फ़ाइल या depset का क्रम; डिफ़ॉल्ट रूप से unbound
होता है कार्रवाई के लिए ज़रूरी टूल की सूची या depset. टूल, अतिरिक्त रनफ़ाइल वाले इनपुट होते हैं, जो कार्रवाई के लिए अपने-आप उपलब्ध होते हैं. इस सूची में Files या FilesToRunProvider के इंस्टेंस शामिल हो सकते हैं.
arguments sequence; डिफ़ॉल्ट रूप से []
होता है ऐक्शन के कमांड लाइन आर्ग्युमेंट. यह स्ट्रिंग या actions.args() ऑब्जेक्ट की सूची होनी चाहिए.

Bazel, इस एट्रिब्यूट में मौजूद एलिमेंट को आर्ग्युमेंट के तौर पर कमांड को पास करता है. कमांड, $1, $2 वगैरह जैसे शेल वैरिएबल सबस्टिट्यूशन का इस्तेमाल करके इन आर्ग्युमेंट को ऐक्सेस कर सकता है. ध्यान दें कि इंडेक्स करने से पहले, Args ऑब्जेक्ट को फ़्लैट कर दिया जाता है. अगर Args ऑब्जेक्ट का साइज़ पता नहीं है, तो उसके बाद की सभी स्ट्रिंग, अनुमानित इंडेक्स पर होंगी. अनिश्चित साइज़ के Args ऑब्जेक्ट के साथ $@ (सभी आर्ग्युमेंट वापस पाने के लिए) का इस्तेमाल करना मददगार हो सकता है.

अगर command, स्ट्रिंग की सूची है, तो हो सकता है कि इस पैरामीटर का इस्तेमाल न किया जा सके.

mnemonic स्ट्रिंग या None; डिफ़ॉल्ट रूप से None
कार्रवाई का एक शब्द का ब्यौरा, जैसे कि CppCompile या GoLink.
command स्ट्रिंग या स्ट्रिंग का क्रम; शेल कमांड को चलाने के लिए ज़रूरी
है. यह एक स्ट्रिंग (प्राथमिकता दी जाती है) या स्ट्रिंग का क्रम (इस्तेमाल से रोका गया) हो सकता है.

अगर command कोई स्ट्रिंग है, तो इसे sh -c <command> "" <arguments> की तरह ही चलाया जाता है. इसका मतलब है कि arguments में मौजूद एलिमेंट, कमांड के लिए $1, $2 (या Windows बैच का इस्तेमाल करने पर %1, %2) वगैरह के तौर पर उपलब्ध कराए जाते हैं. अगर arguments में कोई actions.args() ऑब्जेक्ट है, तो उनका कॉन्टेंट कमांड लाइन में एक-एक करके जोड़ा जाता है, ताकि $i, Args ऑब्जेक्ट में मौजूद अलग-अलग स्ट्रिंग का रेफ़रंस दे सके. ध्यान दें कि अगर arguments के हिस्से के तौर पर, किसी ऐसे Args ऑब्जेक्ट को पास किया जाता है जिसका साइज़ पता नहीं है, तो स्ट्रिंग अज्ञात इंडेक्स पर होंगी. ऐसे में, $@ शेल सबस्टिट्यूशन (सभी आर्ग्युमेंट वापस पाएं) काम का हो सकता है.

(अब काम नहीं करता) अगर command, स्ट्रिंग का क्रम है, तो पहला आइटम वह एक्सीक्यूटेबल है जिसे चलाना है और बाकी आइटम उसके आर्ग्युमेंट हैं. अगर इस फ़ॉर्म का इस्तेमाल किया जाता है, तो arguments पैरामीटर नहीं दिया जाना चाहिए. ध्यान दें कि इस फ़ॉर्म का इस्तेमाल नहीं किया जा सकता. इसे जल्द ही हटा दिया जाएगा. यह `--incompatible_run_shell_command_string` के साथ बंद है. यह पुष्टि करने के लिए कि आपका कोड काम करता है या नहीं, इस फ़्लैग का इस्तेमाल करें.

Bazel, निर्देश को लागू करने के लिए उसी शेल का इस्तेमाल करता है जिसका इस्तेमाल genrules के लिए किया जाता है.

progress_message स्ट्रिंग या None; डिफ़ॉल्ट तौर पर None
बिल्ड के दौरान उपयोगकर्ता को दिखाने के लिए प्रोग्रेस मैसेज. उदाहरण के लिए, "foo.o बनाने के लिए foo.cc को कंपाइल किया जा रहा है". मैसेज में %{label}, %{input} या %{output} पैटर्न हो सकते हैं. इन्हें लेबल स्ट्रिंग, पहले इनपुट या आउटपुट के पाथ से बदला जाता है. स्टैटिक स्ट्रिंग के बजाय पैटर्न का इस्तेमाल करें, क्योंकि ये ज़्यादा असरदार होते हैं.
use_default_shell_env bool; डिफ़ॉल्ट रूप से False
होता है क्या ऐक्शन को डिफ़ॉल्ट शेल एनवायरमेंट का इस्तेमाल करना चाहिए. इसमें, ओएस पर निर्भर कुछ वैरिएबल के साथ-साथ --action_env से सेट किए गए वैरिएबल भी शामिल होते हैं.

अगर use_default_shell_env और env, दोनों को True पर सेट किया जाता है, तो --incompatible_merge_fixed_and_default_shell_env चालू होने पर (डिफ़ॉल्ट), env में सेट की गई वैल्यू, शेल के डिफ़ॉल्ट एनवायरमेंट को बदल देंगी. अगर फ़्लैग चालू नहीं है, तो env को अनदेखा कर दिया जाता है.

env dict या None; डिफ़ॉल्ट None
है एनवायरमेंट वैरिएबल की डिक्शनरी सेट करता है.

अगर use_default_shell_env और env, दोनों को True पर सेट किया जाता है, तो --incompatible_merge_fixed_and_default_shell_env चालू होने पर (डिफ़ॉल्ट), env में सेट की गई वैल्यू, शेल के डिफ़ॉल्ट एनवायरमेंट को बदल देंगी. अगर फ़्लैग चालू नहीं है, तो env को अनदेखा कर दिया जाता है.

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 लेबल या string; या 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 string; या None; डिफ़ॉल्ट रूप से None
वह पाथ होता है जिस पर आउटपुट सिमलिंक को ले जाया जाता है. इसमें नॉर्मलाइज़ेशन या कोई अन्य प्रोसेस लागू नहीं की जाती.
is_executable bool; डिफ़ॉल्ट वैल्यू False
है इसका इस्तेमाल सिर्फ़ target_file के साथ किया जा सकता है, target_path के साथ नहीं. अगर यह सही है, तो कार्रवाई करने पर target_file के पाथ की जांच की जाती है, ताकि यह पक्का किया जा सके कि इसे चलाया जा सकता है. अगर ऐसा नहीं है, तो गड़बड़ी की सूचना दी जाती है. is_executable को 'गलत है' पर सेट करने का मतलब यह नहीं है कि टारगेट को लागू नहीं किया जा सकता. इसका मतलब सिर्फ़ यह है कि उसकी पुष्टि नहीं की गई है.

target_path के लिए यह सुविधा काम की नहीं है, क्योंकि हो सकता है कि बिल्ड के समय डैंगलिंग सिंबललिंक मौजूद न हों.

progress_message स्ट्रिंग या None; डिफ़ॉल्ट तौर पर None
बिल्ड के दौरान उपयोगकर्ता को दिखाने के लिए प्रोग्रेस मैसेज.

template_dict

TemplateDict actions.template_dict()

मेमोरी-कुशल टेम्प्लेट विस्तार के लिए एक templateDict ऑब्जेक्ट लौटाता है.

write

None actions.write(output, content, is_executable=False)

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

पैरामीटर

पैरामीटर ब्यौरा
output फ़ाइल; ज़रूरी है
आउटपुट फ़ाइल.
content string; या Args; फ़ाइल के कॉन्टेंट के लिए
ज़रूरी है. यह स्ट्रिंग या actions.args() ऑब्जेक्ट हो सकता है.
is_executable bool; डिफ़ॉल्ट रूप से False
होता है क्या आउटपुट फ़ाइल को चलाया जा सकता है.