कार्रवाइयां

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

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

पैसे चुकाकर बने सदस्यों के लिए

args

Args actions.args()

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

declare_directory

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

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

पैरामीटर

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

declare_file

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

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

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

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

पैरामीटर

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

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

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

पैरामीटर

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

do_nothing

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

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

पैरामीटर

पैरामीटर कंपनी का ब्यौरा
mnemonic ज़रूरी है
कार्रवाई के बारे में एक शब्द में जानकारी देना ज़रूरी है. उदाहरण के लिए, CppCompile या GoLink.
inputs फ़ाइल का क्रम या डिप्सेट; डिफ़ॉल्ट []
कार्रवाई की इनपुट फ़ाइलों की सूची है.

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
टेंप्लेट को बड़ा करते समय किए जाने वाले विकल्प हैं.

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

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

पैरामीटर

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

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

executable File; या string; या FilesToRunProvider; ज़रूरी
कार्रवाई से कॉल की जाने वाली एक्ज़ीक्यूटेबल फ़ाइल.
tools सीक्वेंस या डिप्सेट; डिफ़ॉल्ट रूप से unbound
कार्रवाई के लिए ज़रूरी सभी टूल की सूची या सूची होती है. टूल, अतिरिक्त रनफ़ाइल वाले इनपुट होते हैं, जो कार्रवाई के लिए अपने-आप उपलब्ध होते हैं. जब सूची दी जाती है, तब यह Files, FilesToRunProvider इंस्टेंस या Files के डिपार्टमेंट का एक विषम संग्रह हो सकता है. जो फ़ाइलें सीधे सूची में हैं और ctx.executable से आती हैं उनकी रनफ़ाइल अपने-आप जुड़ जाएंगी. जब डिप्सेट दिया जाता है, तो उसमें सिर्फ़ Files ही शामिल होना चाहिए. दोनों ही मामलों में, रनफ़ाइल के लिए ctx.executable के साथ डेपसेट में मौजूद फ़ाइलों की क्रॉस-रेफ़रंस नहीं की जाती है.
arguments क्रम; डिफ़ॉल्ट तौर पर, []
कार्रवाई के कमांड लाइन आर्ग्युमेंट होते हैं. यह स्ट्रिंग या actions.args() ऑब्जेक्ट की सूची होनी चाहिए.
mnemonic string; या 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 सीक्वेंस या None; डिफ़ॉल्ट रूप से यह None
(प्रयोग के तौर पर) इनपुट रनफ़ाइल मेटाडेटा सेट करता है; आम तौर पर, इन्हें clear_command के ज़रिए जनरेट किया जाता है.
exec_group string; या None; डिफ़ॉल्ट वैल्यू None
होती है. यह दिए गए exec ग्रुप के एक्ज़ीक्यूशन प्लैटफ़ॉर्म पर कार्रवाई करती है. अगर ऐसा नहीं होता है, तो टारगेट के डिफ़ॉल्ट एक्ज़ीक्यूशन प्लैटफ़ॉर्म का इस्तेमाल करता है.
shadowed_action कार्रवाई; डिफ़ॉल्ट तौर पर None पर सेट होता है
कार्रवाई की इनपुट सूची और एनवायरमेंट में जोड़े गए, शैडो की गई कार्रवाई के इनपुट और एनवायरमेंट का इस्तेमाल करके कार्रवाई की जाती है. कार्रवाई एनवायरमेंट, शैडो की गई किसी भी कार्रवाई के एनवायरमेंट वैरिएबल को ओवरराइट कर सकता है. अगर इनमें से कोई भी नहीं है, तो सिर्फ़ कार्रवाई के इनपुट और दिए गए एनवायरमेंट का इस्तेमाल किया जाता है.
resource_set कॉल करने लायक; या None; डिफ़ॉल्ट None है
यह एक कॉलबैक फ़ंक्शन है, जो संसाधन सेट डिक्शनरी दिखाता है. अगर इस कार्रवाई को स्थानीय तौर पर चलाया जाता है, तो संसाधन के इस्तेमाल का अनुमान लगाने के लिए इसका इस्तेमाल किया जाता है.

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

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

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

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

toolchain लेबल या string; या None. डिफ़ॉल्ट रूप से, यह unbound
होता है

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

फ़िलहाल, इसमें कोई बदलाव नहीं किया जा सकता. हालांकि, हमारा सुझाव है कि जब किसी टूलचेन का इस्तेमाल किया जाए, तब इसे सेट कर लें. ऐसा इसलिए, क्योंकि आने वाले समय में 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=unbound)

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

पैरामीटर

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

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

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

mnemonic string; या 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 पैरामीटर नहीं दिया जाना चाहिए. ध्यान दें कि इस फ़ॉर्म के इस्तेमाल पर रोक लगा दी गई है और इसे जल्द ही हटा दिया जाएगा. इसे `--inसक्रिय_run_shell_command_string` की मदद से बंद किया गया है. इस फ़्लैग का इस्तेमाल करके, यह पुष्टि करें कि आपका कोड इसके साथ काम करता है या नहीं.

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

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

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

फ़िलहाल, इसमें कोई बदलाव नहीं किया जा सकता. हालांकि, हमारा सुझाव है कि जब किसी टूलचेन का इस्तेमाल किया जाए, तब इसे सेट कर लें. ऐसा इसलिए, क्योंकि आने वाले समय में 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 का इस्तेमाल करते समय, output को declare_file() या declare_directory() के साथ बताएं और target_file टाइप से मैच करें. इससे सिमलिंक पॉइंट, target_file पर सेट हो जाता है. जब भी सिमलिंक का टारगेट या इसके कॉन्टेंट में बदलाव होता है, तब Baज़ल, इस ऐक्शन के आउटपुट को अमान्य कर देता है.

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

पैरामीटर

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