कार्रवाइयां

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

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

सदस्य

args

Args actions.args()

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

declare_directory

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

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

पैरामीटर

पैरामीटर ब्यौरा
filename ज़रूरी है
अगर कोई 'सिबलिंग' नहीं दिया गया है, तो मौजूदा पैकेज के हिसाब से नई डायरेक्ट्री का पाथ. अगर ऐसा नहीं है, तो फ़ाइल का बेस नेम ('सिबलिंग' किसी डायरेक्ट्री की जानकारी देता है).
sibling File या 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 से आने वाली फ़ाइलों की रनफ़ाइलें अपने-आप जुड़ जाएंगी. जब डिप्सेट दिया जाता है, तो उसमें सिर्फ़ 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 डिफ़ॉल्ट रूप से, 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
  • "मेमोरी": एमबी में; डिफ़ॉल्ट 250
  • "local_test": स्थानीय टेस्ट की संख्या; डिफ़ॉल्ट तौर पर 1

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

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

toolchain लेबल या string; या 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 फ़ाइल या 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 डिफ़ॉल्ट रूप से, 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 कॉल करने लायक; या 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 पर ले जाता है. Bazel, कभी भी सिर्फ़ लिंक को हल नहीं करता. इस कार्रवाई का आउटपुट सिर्फ़ तब अमान्य होता है, जब सिर्फ़ लिंक के टेक्स्ट कॉन्टेंट (यानी 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
होता है क्या आउटपुट फ़ाइल को चलाया जा सकता है.