कार्रवाइयां

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

पैसे चुकाकर बने सदस्य

args

Args actions.args()

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

declare_directory

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

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

पैरामीटर

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

declare_file

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

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

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

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

पैरामीटर

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

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

प्रयोग के तौर पर. इस पैरामीटर पर एक्सपेरिमेंट जारी है और यह किसी भी समय बदल सकता है. कृपया इस पर निर्भर न रहें. --experimental_allow_unresolved_symlinks सेट करके इसे प्रयोग के तौर पर चालू किया जा सकता है

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

पैरामीटर

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

do_nothing

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

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

पैरामीटर

पैरामीटर ब्यौरा
mnemonic ज़रूरी है
कार्रवाई के बारे में एक शब्द का ब्यौरा. उदाहरण के लिए, CppCompile या GoLink.
inputs sequence of Files; or 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 डिफ़ॉल्ट = गलत
आउटपुट फ़ाइल को एक्ज़ीक्यूट किया जाना चाहिए या नहीं.
computed_substitutions TemplateDict; डिफ़ॉल्ट = अनबाउंड
एक्सपेरिमेंटल. इस पैरामीटर पर एक्सपेरिमेंट जारी है और यह किसी भी समय बदल सकता है. कृपया इस पर निर्भर न रहें. टेंप्लेट को बड़ा करते समय, --+experimental_lazy_template_expansion
प्रयोग के तौर पर: विकल्प सेट करके, इसे एक्सपेरिमेंट के तौर पर चालू किया जा सकता है.

run

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=None)

ऐसी कार्रवाई बनाता है जो एक्ज़ीक्यूटेबल चलती है. इस्तेमाल का उदाहरण देखें.

पैरामीटर

पैरामीटर ब्यौरा
outputs sequence of Files; ज़रूरी है
कार्रवाई की आउटपुट फ़ाइलों की सूची.
inputs sequence of Files; or depset; डिफ़ॉल्ट = []
कार्रवाई की इनपुट फ़ाइलों की सूची बनाएं या सूची हटाएं.
unused_inputs_list File; or None; डिफ़ॉल्ट = कोई नहीं
वह फ़ाइल जिसमें ऐसे इनपुट की सूची है जिनका इस्तेमाल कार्रवाई में नहीं किया गया है.

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

executable File; or string; or FilesToRunProvider; ज़रूरी है
एक्ज़ीक्यूटेबल फ़ाइल, जिसे कार्रवाई के दौरान कॉल किया जाना है.
tools sequence; or depset; डिफ़ॉल्ट = अनबाउंड
कार्रवाई के लिए ज़रूरी सभी टूल की सूची बनाएं या सूची बनाएं. टूल, अतिरिक्त रनफ़ाइल वाले इनपुट होते हैं. ये इनपुट, कार्रवाई के लिए अपने-आप उपलब्ध होते हैं. जब कोई सूची दी जाती है, तो वह Files, FilesToRunProvider इंस्टेंस या Files के डिसेट्स का एक विषम संग्रह हो सकती है. जो फ़ाइलें सीधे तौर पर सूची में शामिल हैं और ctx.executable से ली गई हैं उनमें रनफ़ाइल अपने-आप जुड़ जाएगी. डिप्सेट देते समय, उसमें सिर्फ़ Files होनी चाहिए. दोनों मामलों में, डिसेट में मौजूद फ़ाइलों को रनफ़ाइल के लिए ctx.executable की मदद से क्रॉस-रेफ़रंस नहीं किया जाता है.
arguments sequence; डिफ़ॉल्ट = []
कार्रवाई के लिए कमांड लाइन तर्क. स्ट्रिंग या actions.args() ऑब्जेक्ट की सूची होनी चाहिए.
mnemonic string; or None; डिफ़ॉल्ट = कोई नहीं
कार्रवाई के बारे में एक शब्द की जानकारी. उदाहरण के लिए, CppCompile या GoLink.
progress_message string; or None; डिफ़ॉल्ट = कोई नहीं
बिल्ड के दौरान उपयोगकर्ता को दिखाए जाने वाला प्रोग्रेस मैसेज. उदाहरण के लिए, "foo.o बनाने के लिए foo.cc को कंपाइल किया जा रहा है". मैसेज में %{label}, %{input} या %{output} पैटर्न हो सकते हैं. इन्हें लेबल स्ट्रिंग, फ़र्स्ट इनपुट या आउटपुट पाथ से बदला जाता है. स्टैटिक स्ट्रिंग के बजाय पैटर्न का इस्तेमाल करें, क्योंकि पुरानी स्ट्रिंग ज़्यादा असरदार होती हैं.
use_default_shell_env डिफ़ॉल्ट = गलत
कार्रवाई को बिल्ट-इन शेल एनवायरमेंट का इस्तेमाल करना चाहिए या नहीं.
env dict; or None; डिफ़ॉल्ट = कोई नहीं
एनवायरमेंट वैरिएबल की डिक्शनरी सेट करता है.
execution_requirements dict; or None; डिफ़ॉल्ट = कोई नहीं
कार्रवाई शेड्यूल करने के लिए जानकारी. काम की कुंजियों के लिए टैग देखें.
input_manifests sequence; or None; डिफ़ॉल्ट = कोई नहीं
(प्रयोग के तौर पर), इनपुट रनफ़ाइल मेटाडेटा सेट करता है. आम तौर पर, इसे समाधान_command से जनरेट किया जाता है.
exec_group string; or None; डिफ़ॉल्ट = कोई नहीं
दिए गए एग्ज़ीक्यूटिव ग्रुप के काम करने वाले प्लैटफ़ॉर्म पर कार्रवाई करता है. अगर कोई भी विकल्प लागू नहीं होता है, तो टारगेट के डिफ़ॉल्ट एक्ज़ीक्यूशन प्लैटफ़ॉर्म का इस्तेमाल करता है.
shadowed_action Action; डिफ़ॉल्ट = कोई नहीं
कार्रवाई की इनपुट सूची और एनवायरमेंट में जोड़े गए, शैडो की गई कार्रवाई के इनपुट और एनवायरमेंट का इस्तेमाल करके, कार्रवाई करता है. ऐक्शन एनवायरमेंट, शैडो की गई किसी भी कार्रवाई के एनवायरमेंट वैरिएबल को ओवरराइट कर सकता है. अगर कोई नहीं है, तो सिर्फ़ कार्रवाई के इनपुट और दिए गए एनवायरमेंट का इस्तेमाल किया जाता है.
resource_set callable; or None; डिफ़ॉल्ट = कोई नहीं
यह एक कॉलबैक फ़ंक्शन है, जो एक रिसॉर्स सेट डिक्शनरी दिखाता है. इसका इस्तेमाल, रनिंग के समय संसाधन के इस्तेमाल का अनुमान लगाने के लिए किया जाता है. ऐसा तब किया जाता है, जब यह कार्रवाई स्थानीय तौर पर की जाती है.

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

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

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

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

toolchain Label; or string; or None; डिफ़ॉल्ट = कोई नहीं

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

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

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

जब `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=None)

ऐसी कार्रवाई बनाता है जो शेल कमांड चलाती है. इस्तेमाल का उदाहरण देखें.

पैरामीटर

पैरामीटर ब्यौरा
outputs sequence of Files; ज़रूरी है
कार्रवाई की आउटपुट फ़ाइलों की सूची.
inputs sequence of Files; or depset; डिफ़ॉल्ट = []
कार्रवाई की इनपुट फ़ाइलों की सूची बनाएं या सूची हटाएं.
tools sequence of Files; or depset; डिफ़ॉल्ट = अनबाउंड
कार्रवाई के लिए ज़रूरी सभी टूल की सूची बनाएं या सूची बनाएं. टूल, अतिरिक्त रनफ़ाइल वाले इनपुट होते हैं. ये इनपुट, कार्रवाई के लिए अपने-आप उपलब्ध होते हैं. इस सूची में Files या FilesToRunProvider के इंस्टेंस हो सकते हैं.
arguments sequence; डिफ़ॉल्ट = []
कार्रवाई के लिए कमांड लाइन तर्क. स्ट्रिंग या actions.args() ऑब्जेक्ट की सूची होनी चाहिए.

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

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

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

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

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

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

progress_message string; or None; डिफ़ॉल्ट = कोई नहीं
बिल्ड के दौरान उपयोगकर्ता को दिखाए जाने वाला प्रोग्रेस मैसेज. उदाहरण के लिए, "foo.o बनाने के लिए foo.cc को कंपाइल किया जा रहा है". मैसेज में %{label}, %{input} या %{output} पैटर्न हो सकते हैं. इन्हें लेबल स्ट्रिंग, फ़र्स्ट इनपुट या आउटपुट पाथ से बदला जाता है. स्टैटिक स्ट्रिंग के बजाय पैटर्न का इस्तेमाल करें, क्योंकि पुरानी स्ट्रिंग ज़्यादा असरदार होती हैं.
use_default_shell_env डिफ़ॉल्ट = गलत
कार्रवाई को बिल्ट-इन शेल एनवायरमेंट का इस्तेमाल करना चाहिए या नहीं.
env dict; or None; डिफ़ॉल्ट = कोई नहीं
एनवायरमेंट वैरिएबल की डिक्शनरी सेट करता है.
execution_requirements dict; or None; डिफ़ॉल्ट = कोई नहीं
कार्रवाई शेड्यूल करने के लिए जानकारी. काम की कुंजियों के लिए टैग देखें.
input_manifests sequence; or None; डिफ़ॉल्ट = कोई नहीं
(प्रयोग के तौर पर), इनपुट रनफ़ाइल मेटाडेटा सेट करता है. आम तौर पर, इसे समाधान_command से जनरेट किया जाता है.
exec_group string; or None; डिफ़ॉल्ट = कोई नहीं
दिए गए एग्ज़ीक्यूटिव ग्रुप के काम करने वाले प्लैटफ़ॉर्म पर कार्रवाई करता है. अगर कोई भी विकल्प लागू नहीं होता है, तो टारगेट के डिफ़ॉल्ट एक्ज़ीक्यूशन प्लैटफ़ॉर्म का इस्तेमाल करता है.
shadowed_action Action; डिफ़ॉल्ट = कोई नहीं
कार्रवाई के इनपुट सूची में जोड़े गए, शैडो की गई कार्रवाई के खोजे गए इनपुट का इस्तेमाल करके, कार्रवाई करता है. अगर कोई नहीं है, तो सिर्फ़ कार्रवाई के इनपुट का इस्तेमाल करता है.
resource_set callable; or None; डिफ़ॉल्ट = कोई नहीं
अगर स्थानीय रूप से चलाया जाए, तो संसाधन के इस्तेमाल का अनुमान लगाने के लिए एक कॉलबैक फ़ंक्शन. ctx.actions.run() देखें.
toolchain Label; or string; or None; डिफ़ॉल्ट = कोई नहीं

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

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

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

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

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

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

template_dict

TemplateDict actions.template_dict()

प्रयोग के तौर पर. इस एपीआई पर एक्सपेरिमेंट जारी है. इसे किसी भी समय बदला जा सकता है. कृपया इस पर निर्भर न रहें. इसे --+experimental_lazy_template_expansion
प्रयोग के तौर पर सेट करके, प्रयोग के आधार पर चालू किया जा सकता है: मेमोरी की कम खपत करने वाले टेंप्लेट को बड़ा करने के लिए, TemplateDict ऑब्जेक्ट दिखाता है.

लिखें

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

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

पैरामीटर

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