कार्रवाइयां

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

declare_file

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

इससे पता चलता है कि नियम या आसपेक्ट, दिए गए फ़ाइल नाम के साथ फ़ाइल बनाता है. अगर sibling नहीं दिया गया है, तो फ़ाइल का नाम पैकेज डायरेक्ट्री के हिसाब से होता है. अगर 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; default = []
ऐक्शन की इनपुट फ़ाइलों की सूची.

expand_template

None actions.expand_template(template, output, substitutions={}, is_executable=False, computed_substitutions=unbound)

टेंप्लेट एक्सपैंशन ऐक्शन बनाता है. जब कार्रवाई होगी, तो यह टेंप्लेट के आधार पर एक फ़ाइल जनरेट करेगी. टेम्प्लेट के हिस्सों को substitutions डिक्शनरी का इस्तेमाल करके बदला जाएगा. बदलावों को उसी क्रम में बदला जाएगा जिस क्रम में उन्हें बदलने के लिए कहा गया है. जब भी टेंप्लेट में शब्दकोश की कोई कुंजी दिखती है (या पिछले बदलाव की वजह से), तो इसे संबंधित वैल्यू से बदल दिया जाता है. कुंजियों के लिए कोई खास सिंटैक्स नहीं है. उदाहरण के लिए, टकरावों से बचने के लिए, कर्ली ब्रैकेट इस्तेमाल किए जा सकते हैं. जैसे, {KEY}. इस्तेमाल का उदाहरण देखें.

पैरामीटर

पैरामीटर ब्यौरा
template ज़रूरी है
टेंप्लेट फ़ाइल, जो UTF-8 कोड में बदली गई टेक्स्ट फ़ाइल होती है.
output ज़रूरी है
आउटपुट फ़ाइल, जो UTF-8 कोड में बदली गई टेक्स्ट फ़ाइल होती है.
substitutions default = {}
टेंप्लेट को बड़ा करते समय किए जाने वाले विकल्प.
is_executable डिफ़ॉल्ट = False
क्या आउटपुट फ़ाइल को चलाया जा सकता है.
computed_substitutions TemplateDict; डिफ़ॉल्ट = अनबाउंड
एक्सपेरिमेंट के तौर पर. यह पैरामीटर एक्सपेरिमेंट के तौर पर उपलब्ध है. इसमें कभी भी बदलाव किया जा सकता है. कृपया इस पर निर्भर न रहें. इसे एक्सपेरिमेंट के तौर पर चालू किया जा सकता है. इसके लिए, --+experimental_lazy_template_expansion
एक्सपेरिमेंट: टेंप्लेट को बड़ा करते समय बदलाव करने के लिए, 'विकल्प' सेट करें.

रन

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; default = []
कार्रवाई की इनपुट फ़ाइलों की सूची या depset.
unused_inputs_list File; or None; डिफ़ॉल्ट = कोई नहीं
ऐसी फ़ाइल जिसमें इनपुट की ऐसी सूची दी गई है जिसका इस्तेमाल कार्रवाई में नहीं किया गया है.

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

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

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

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

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

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

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

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

बेज़ल, आदेश को अंजाम देने के लिए, उसी शेल का इस्तेमाल करते हैं, जो जेन रूल के लिए करते हैं.

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

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

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

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

अगर `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 पर सेट हो जाता है. जब भी सिमलिंक का टारगेट या उसके कॉन्टेंट में बदलाव होता है, Baze इस ऐक्शन के आउटपुट को अमान्य कर देता है.

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

पैरामीटर

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

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

progress_message string; or None; default = 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 डिफ़ॉल्ट = गलत
आउटपुट फ़ाइल एक्ज़ीक्यूटेबल होनी चाहिए या नहीं.