कार्रवाइयां

समस्या की शिकायत करें सोर्स देखें Nightly · 8.4 · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

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

सदस्य

args

Args actions.args()

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

declare_directory

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

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

पैरामीटर

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

declare_file

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

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

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

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

पैरामीटर

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

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

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

पैरामीटर

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

do_nothing

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

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

पैरामीटर

पैरामीटर ब्यौरा
mnemonic string; required
कार्रवाई के बारे में एक शब्द में जानकारी. उदाहरण के लिए, CppCompile या GoLink.
inputs File का sequence या 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 sequence of Files; ज़रूरी है
कार्रवाई की आउटपुट फ़ाइलों की सूची.
inputs sequence of Files; या depset; डिफ़ॉल्ट रूप से []
होता है कार्रवाई के इनपुट फ़ाइलों की सूची या depset.
unused_inputs_list File या None; डिफ़ॉल्ट तौर पर None
होता है ऐसी फ़ाइल जिसमें कार्रवाई के लिए इस्तेमाल नहीं किए गए इनपुट की सूची होती है.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Bazel, कमांड को उसी शेल में एक्ज़ीक्यूट करता है जिसका इस्तेमाल वह genrules के लिए करता है.

progress_message string या None; डिफ़ॉल्ट तौर पर None
होता है बिल्ड के दौरान उपयोगकर्ता को दिखाने के लिए प्रोग्रेस मैसेज. उदाहरण के लिए, "foo.cc को foo.o बनाने के लिए कंपाइल किया जा रहा है". मैसेज में %{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 में सेट की गई वैल्यू, डिफ़ॉल्ट शेल एनवायरमेंट को बदल देंगी. --incompatible_merge_fixed_and_default_shell_env डिफ़ॉल्ट रूप से चालू होता है. अगर फ़्लैग चालू नहीं है, तो env को अनदेखा कर दिया जाता है.

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

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

execution_requirements dict; या None; डिफ़ॉल्ट रूप से None
होता है कार्रवाई को शेड्यूल करने के लिए जानकारी. काम की कुंजियों के लिए, टैग देखें.
input_manifests sequence या None; डिफ़ॉल्ट तौर पर None
होता है लेगसी आर्ग्युमेंट. ध्यान नहीं दिया गया.
exec_group string या None; डिफ़ॉल्ट रूप से None
होता है यह दिए गए एक्ज़ीक्यूशन ग्रुप के एक्ज़ीक्यूशन प्लैटफ़ॉर्म पर कार्रवाई करता है. अगर कोई भी नहीं है, तो टारगेट के डिफ़ॉल्ट एक्ज़ीक्यूशन प्लैटफ़ॉर्म का इस्तेमाल करता है.
shadowed_action कार्रवाई; डिफ़ॉल्ट रूप से None
होता है यह कार्रवाई, शैडो ऐक्शन के खोजे गए इनपुट का इस्तेमाल करके की जाती है. इन इनपुट को ऐक्शन के इनपुट की सूची में जोड़ा जाता है. अगर कोई भी इनपुट नहीं है, तो सिर्फ़ ऐक्शन के इनपुट का इस्तेमाल करता है.
resource_set कॉलेबल; या None; डिफ़ॉल्ट तौर पर None
होता है अगर इसे स्थानीय तौर पर चलाया जाता है, तो संसाधन के इस्तेमाल का अनुमान लगाने के लिए कॉलबैक फ़ंक्शन. ctx.actions.run() देखें.
toolchain Label; या 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 एट्रिब्यूट की वैल्यू से output एट्रिब्यूट की वैल्यू का टाइप मेल खाना चाहिए. इससे सिमलिंक, target_file पर पॉइंट करेगा. सिमलिंक के टारगेट या उसके कॉन्टेंट में बदलाव होने पर, Bazel इस कार्रवाई के आउटपुट को अमान्य कर देता है.

इसके अलावा, target_path का इस्तेमाल करते समय, declare_symlink() के साथ output का एलान करें. इस मामले में, सिमलंक target_path की ओर इशारा करता है. Bazel कभी भी सिमलंक को हल नहीं करता है. इस कार्रवाई का आउटपुट सिर्फ़ तब अमान्य होता है, जब सिमलंक के टेक्स्ट कॉन्टेंट (यानी कि readlink() की वैल्यू) में बदलाव होता है. खास तौर पर, इसका इस्तेमाल डैंगलिंग सिमलंक बनाने के लिए किया जा सकता है.

पैरामीटर

पैरामीटर ब्यौरा
output फ़ाइल; ज़रूरी है
यह इस कार्रवाई का आउटपुट है.
target_file File; या None; डिफ़ॉल्ट तौर पर None
होता है वह फ़ाइल जिस पर आउटपुट सिंबल लिंक पॉइंट करेगा.
target_path string; या None; डिफ़ॉल्ट तौर पर None
होता है वह सटीक पाथ जिस पर आउटपुट सिंबल लिंक पॉइंट करेगा. इसमें कोई बदलाव या अन्य प्रोसेसिंग नहीं की जाती है.
is_executable bool; डिफ़ॉल्ट रूप से False
होता है इसका इस्तेमाल सिर्फ़ target_file के साथ किया जा सकता है, target_path के साथ नहीं. अगर यह वैल्यू 'सही है' पर सेट है, तो कार्रवाई पूरी होने पर target_file के पाथ की जांच की जाती है. इससे यह पुष्टि की जाती है कि इसे एक्ज़ीक्यूट किया जा सकता है. अगर ऐसा नहीं होता है, तो गड़बड़ी की सूचना दी जाती है. is_executable को 'गलत है' पर सेट करने का मतलब यह नहीं है कि टारगेट को लागू नहीं किया जा सकता. इसका मतलब सिर्फ़ यह है कि पुष्टि नहीं की जाती.

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

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

template_dict

TemplateDict actions.template_dict()

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

मेरी मदद करो

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

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

पैरामीटर

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