कार्रवाइयां

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

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

सदस्य

args

Args actions.args()

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

declare_directory

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

इससे पता चलता है कि नियम या एस्पेक्ट, मौजूदा पैकेज में दिए गए नाम की डायरेक्ट्री बनाता है. आपको एक ऐसी कार्रवाई बनानी होगी जो डायरेक्ट्री जनरेट करती हो. डायरेक्ट्री के कॉन्टेंट को Starlark से सीधे तौर पर ऐक्सेस नहीं किया जा सकता. हालांकि, 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
ऐसी फ़ाइल जो नई फ़ाइल के साथ एक ही डायरेक्ट्री में मौजूद हो. फ़ाइल, मौजूदा पैकेज में होनी चाहिए.

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

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

पैरामीटर

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

do_nothing

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

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

पैरामीटर

पैरामीटर ब्यौरा
mnemonic ज़रूरी है
कार्रवाई के बारे में एक शब्द में जानकारी, जैसे कि 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 डिफ़ॉल्ट रूप से, {}
टेंप्लेट को बड़ा करते समय किए जाने वाले बदलाव.
is_executable डिफ़ॉल्ट रूप से 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 यह डिफ़ॉल्ट है 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
होता है (प्रयोग के तौर पर उपलब्ध) इनपुट रनफ़ाइल का मेटाडेटा सेट करता है. आम तौर पर, ये resolve_command से जनरेट होते हैं.
exec_group string; या None; डिफ़ॉल्ट रूप से यह None होता है
दिए गए exec ग्रुप के एक्ज़ीक्यूशन प्लैटफ़ॉर्म पर कार्रवाई करता है. अगर कोई नहीं है, तो टारगेट के डिफ़ॉल्ट रनटाइम प्लैटफ़ॉर्म का इस्तेमाल किया जाता है.
shadowed_action कार्रवाई; डिफ़ॉल्ट रूप से None
होता है कार्रवाई की इनपुट सूची और एनवायरमेंट में जोड़े गए, शैडो की गई कार्रवाई के इनपुट और एनवायरमेंट का इस्तेमाल करके कार्रवाई को चलाता है. ऐक्शन एनवायरमेंट, शैडो की गई किसी भी ऐक्शन के एनवायरमेंट वैरिएबल को ओवरराइट कर सकता है. अगर कोई नहीं है, तो सिर्फ़ ऐक्शन के इनपुट और दिए गए एनवायरमेंट का इस्तेमाल किया जाता है.
resource_set callable; या None; डिफ़ॉल्ट तौर पर None
यह एक कॉलबैक फ़ंक्शन है, जो रिसॉर्स सेट की डिक्शनरी दिखाता है. इसका इस्तेमाल, इस ऐक्शन को स्थानीय तौर पर चलाने पर, रिसॉर्स के इस्तेमाल का अनुमान लगाने के लिए किया जाता है.

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

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

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

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

toolchain लेबल; या स्ट्रिंग; या None; डिफ़ॉल्ट तौर पर unbound

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

फ़िलहाल, यह कोई काम नहीं करता. हालांकि, हमारा सुझाव है कि टूलचेन का इस्तेमाल करते समय इसे सेट करें, क्योंकि आने वाले समय में Bazel के रिलीज़ में इसकी ज़रूरत होगी.

ध्यान दें कि यह कार्रवाई बनाने वाले नियम के लिए यह टूलचेन तय करना ज़रूरी है कि यह 'नियम()' फ़ंक्शन के अंदर काम करे.

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

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

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

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

अगर 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 string; या None; डिफ़ॉल्ट रूप से यह None
प्रोग्रेस मैसेज होता है, जिसे बिल्ड के दौरान उपयोगकर्ता को दिखाया जाता है. उदाहरण के लिए, "foo.o बनाने के लिए foo.cc को कंपाइल किया जा रहा है". इस मैसेज में %{label}, %{input} या %{output} पैटर्न हो सकते हैं. इन्हें लेबल स्ट्रिंग, पहले इनपुट या आउटपुट के पाथ से बदल दिया जाता है. स्टैटिक स्ट्रिंग के बजाय पैटर्न का इस्तेमाल करें, क्योंकि ये ज़्यादा असरदार होते हैं.
use_default_shell_env डिफ़ॉल्ट रूप से, 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
होता है (प्रयोग के तौर पर उपलब्ध) इनपुट रनफ़ाइल का मेटाडेटा सेट करता है. आम तौर पर, ये resolve_command से जनरेट होते हैं.
exec_group स्ट्रिंग या None; डिफ़ॉल्ट None
है यह कार्रवाई, दिए गए एक्सेक्यूशन ग्रुप के एक्सेक्यूशन प्लैटफ़ॉर्म पर की जाती है. अगर कोई नहीं है, तो टारगेट के डिफ़ॉल्ट रनटाइम प्लैटफ़ॉर्म का इस्तेमाल किया जाता है.
shadowed_action कार्रवाई; डिफ़ॉल्ट रूप से None
होता है यह कार्रवाई की इनपुट सूची में जोड़े गए, शैडो की गई कार्रवाई के खोजे गए इनपुट का इस्तेमाल करके कार्रवाई को चलाता है. अगर कोई नहीं है, तो सिर्फ़ ऐक्शन के इनपुट का इस्तेमाल किया जाता है.
resource_set callable; या None; डिफ़ॉल्ट तौर पर None
स्थानीय तौर पर चलाए जाने पर, संसाधन के इस्तेमाल का अनुमान लगाने के लिए कॉलबैक फ़ंक्शन. ctx.actions.run() देखें.
toolchain लेबल; या स्ट्रिंग; या None; डिफ़ॉल्ट तौर पर unbound

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

फ़िलहाल, यह कोई काम नहीं करता. हालांकि, हमारा सुझाव है कि टूलचेन का इस्तेमाल करते समय इसे सेट करें, क्योंकि आने वाले समय में Bazel के रिलीज़ में इसकी ज़रूरत होगी.

ध्यान दें कि यह कार्रवाई बनाने वाले नियम के लिए यह टूलचेन तय करना ज़रूरी है कि यह 'नियम()' फ़ंक्शन के अंदर काम करे.

अगर `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 पर ले जाता है. Baज़ल, सिमलिंक को कभी ठीक नहीं करता और इस कार्रवाई का आउटपुट अमान्य हो जाता है. ऐसा सिर्फ़ तब होता है, जब सिमलिंक के टेक्स्ट कॉन्टेंट (यानी, readlink() की वैल्यू) में बदलाव होता है. खास तौर पर, इसका इस्तेमाल डैंगलिंग सिंबललिंक बनाने के लिए किया जा सकता है.

पैरामीटर

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