कार्रवाइयां

मॉड्यूल, जो कार्रवाइयां बनाने के लिए फ़ंक्शन मुहैया कराता है. 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 default = {}
टेंप्लेट को बड़ा करते समय दिखने वाले विकल्प.
is_executable default = False
आउटपुट फ़ाइल एक्ज़ीक्यूटेबल होनी चाहिए या नहीं.
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 से ली गई हैं उनमें रनफ़ाइल अपने-आप जुड़ जाएगी. अगर डिपसेट दिया गया हो, तो उसमें सिर्फ़ फ़ाइलें होनी चाहिए. दोनों मामलों में, डिप्सेट में मौजूद फ़ाइलों को रनफ़ाइल के लिए 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; डिफ़ॉल्ट = कोई नहीं
(प्रयोग के तौर पर उपलब्ध), इनपुट रनफ़ाइल मेटाडेटा सेट करता है. आम तौर पर, ये टैग base-command की मदद से जनरेट होते हैं.
exec_group string; or None; डिफ़ॉल्ट = कोई नहीं
दिए गए एक्ज़ेक्यूटिव ग्रुप के एक्ज़ीक्यूशन प्लैटफ़ॉर्म पर कार्रवाई करता है. अगर कोई विकल्प नहीं है, तो टारगेट के डिफ़ॉल्ट एक्ज़ीक्यूशन प्लैटफ़ॉर्म का इस्तेमाल किया जाता है.
shadowed_action Action; डिफ़ॉल्ट = कोई नहीं
कार्रवाई की इनपुट सूची और एनवायरमेंट में जोड़े गए, शैडो की गई कार्रवाई के इनपुट और एनवायरमेंट का इस्तेमाल करके, कार्रवाई करता है. ऐक्शन एनवायरमेंट, शैडो की गई किसी भी कार्रवाई के एनवायरमेंट वैरिएबल को ओवरराइट कर सकता है. अगर कोई नहीं है, तो सिर्फ़ कार्रवाई के इनपुट और दिए गए एनवायरमेंट का इस्तेमाल किया जाता है.
resource_set callable; or None; डिफ़ॉल्ट = कोई नहीं
यह एक कॉलबैक फ़ंक्शन है, जो रिसॉर्स सेट डिक्शनरी दिखाता है. अगर यह कार्रवाई स्थानीय तौर पर की जाती है, तो संसाधन के इस्तेमाल का अनुमान लगाने के लिए इसका इस्तेमाल किया जाता है.

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

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

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

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

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

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

फ़िलहाल, यह काम नहीं करता. हालांकि, हमारा सुझाव है कि टूलचेन का इस्तेमाल करते समय इसे सेट करें, क्योंकि आने वाले समय में 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=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_shell_command_string` के साथ बंद कर दिया गया है. यह पुष्टि करने के लिए कि आपका कोड काम करता है, इस फ़्लैग का इस्तेमाल करें.

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

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

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

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

template_dict

TemplateDict actions.template_dict()

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

लिखें

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

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

पैरामीटर

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