कार्रवाइयां

समस्या की शिकायत करें सोर्स देखें Nightly · 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 दिया गया है, तो फ़ाइल उसी डायरेक्ट्री में होती है जिसमें 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 Files का 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; default is {}
Substitutions to make when expanding the template.
is_executable bool; default is False
Whether the output file should be executable.
computed_substitutions TemplateDict; default is unbound
Substitutions to make when expanding the template.

रन

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; required
List of the output files of the action.
inputs Files का sequence; या depset; डिफ़ॉल्ट वैल्यू []
है कार्रवाई के इनपुट फ़ाइलों की सूची या depset.
unused_inputs_list File; या None; डिफ़ॉल्ट वैल्यू None
है ऐसी फ़ाइल जिसमें कार्रवाई के लिए इस्तेमाल नहीं किए गए इनपुट की सूची शामिल हो.

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

executable File; या string; या FilesToRunProvider; required
यह एक ऐसी फ़ाइल होती है जिसे कार्रवाई के ज़रिए कॉल किया जाता है.
tools sequence; या depset; डिफ़ॉल्ट वैल्यू unbound
है कार्रवाई के लिए ज़रूरी टूल की सूची या depset. टूल, ऐसे इनपुट होते हैं जिन्हें एक्ज़ीक्यूट किया जा सकता है. इनमें अपनी रनफ़ाइलें हो सकती हैं. ये रनफ़ाइलें, कार्रवाई के लिए अपने-आप उपलब्ध हो जाती हैं.

सूची में अलग-अलग तरह के ये आइटम शामिल हो सकते हैं:

  • File सेकंड
  • FilesToRunProviderइंस्टेंस
  • depset के File
ctx.executable और सूची में सीधे तौर पर मौजूद FilesToRunProvider की रनफ़ाइलें अपने-आप जुड़ जाएंगी.File सभी टूल को इनपुट के तौर पर अपने-आप जोड़ दिया जाता है.

arguments sequence; default is []
Command line arguments of the action. यह स्ट्रिंग या actions.args() ऑब्जेक्ट की सूची होनी चाहिए.
mnemonic string; या None; डिफ़ॉल्ट वैल्यू None
है कार्रवाई के बारे में एक शब्द में जानकारी. उदाहरण के लिए, CppCompile या GoLink.
progress_message string; या None; डिफ़ॉल्ट वैल्यू None
है बिल्ड के दौरान उपयोगकर्ता को दिखाने के लिए प्रोग्रेस मैसेज. उदाहरण के लिए, "foo.o बनाने के लिए foo.cc को कंपाइल किया जा रहा है". मैसेज में %{label}, %{input} या %{output} पैटर्न शामिल हो सकते हैं. इन्हें लेबल स्ट्रिंग, पहले इनपुट या आउटपुट के पाथ से बदल दिया जाता है. स्टैटिक स्ट्रिंग के बजाय पैटर्न का इस्तेमाल करें, क्योंकि ये ज़्यादा असरदार होते हैं.
use_default_shell_env bool; default is False
Whether the action should use the default shell environment, which consists of a few OS-dependent variables as well as variables set via --action_env.

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

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

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

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

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

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

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

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

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; required
List of the output files of the action.
inputs Files का sequence; या depset; डिफ़ॉल्ट वैल्यू []
है कार्रवाई के इनपुट फ़ाइलों की सूची या depset.
tools Files का sequence या depset; डिफ़ॉल्ट वैल्यू unbound
है कार्रवाई के लिए ज़रूरी किसी भी टूल की सूची या depset. टूल, ऐसे इनपुट होते हैं जिन्हें एक्ज़ीक्यूट किया जा सकता है. इनमें अपनी रनफ़ाइलें हो सकती हैं. ये रनफ़ाइलें, कार्रवाई के लिए अपने-आप उपलब्ध हो जाती हैं.

सूची में अलग-अलग तरह के ये आइटम शामिल हो सकते हैं:

  • File सेकंड
  • FilesToRunProviderइंस्टेंस
  • depset के File
ctx.executable और सूची में सीधे तौर पर मौजूद FilesToRunProvider की रनफ़ाइलें अपने-आप जुड़ जाएंगी.File सभी टूल को इनपुट के तौर पर अपने-आप जोड़ दिया जाता है.

arguments sequence; default is []
Command line arguments of the action. यह स्ट्रिंग या actions.args() ऑब्जेक्ट की सूची होनी चाहिए.

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

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

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

अगर 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.o बनाने के लिए foo.cc को कंपाइल किया जा रहा है". मैसेज में %{label}, %{input} या %{output} पैटर्न शामिल हो सकते हैं. इन्हें लेबल स्ट्रिंग, पहले इनपुट या आउटपुट के पाथ से बदल दिया जाता है. स्टैटिक स्ट्रिंग के बजाय पैटर्न का इस्तेमाल करें, क्योंकि ये ज़्यादा असरदार होते हैं.
use_default_shell_env bool; default is False
Whether the action should use the default shell environment, which consists of a few OS-dependent variables as well as variables set via --action_env.

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

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

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

execution_requirements dict; या None; डिफ़ॉल्ट वैल्यू None
है कार्रवाई शेड्यूल करने के लिए जानकारी. काम की कुंजियों के लिए, टैग देखें.
input_manifests sequence; या None; डिफ़ॉल्ट वैल्यू None
है लेगसी आर्ग्युमेंट. ध्यान नहीं दिया गया.
exec_group string; या None; डिफ़ॉल्ट वैल्यू None
है यह विकल्प, दिए गए exec ग्रुप के एक्ज़ीक्यूशन प्लैटफ़ॉर्म पर कार्रवाई करता है. अगर कोई भी नहीं है, तो टारगेट के डिफ़ॉल्ट एक्ज़ीक्यूशन प्लैटफ़ॉर्म का इस्तेमाल करता है.
shadowed_action कार्रवाई; डिफ़ॉल्ट रूप से None
होता है यह कार्रवाई, शैडो वाली कार्रवाई के खोजे गए इनपुट का इस्तेमाल करके की जाती है. ये इनपुट, कार्रवाई के इनपुट की सूची में जोड़े जाते हैं. अगर कोई भी इनपुट नहीं है, तो सिर्फ़ ऐक्शन के इनपुट का इस्तेमाल करता है.
resource_set callable; या None; default is None
A callback function for estimating resource usage if run locally. 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, *, mnemonic=None)

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

पैरामीटर

पैरामीटर ब्यौरा
output File; required
यह आउटपुट फ़ाइल है.
content string; या Args; required
the contents of the file. यह एक स्ट्रिंग या actions.args() ऑब्जेक्ट हो सकता है.
is_executable bool; default is False
Whether the output file should be executable.
mnemonic string; या None; डिफ़ॉल्ट वैल्यू None
है कार्रवाई के बारे में एक शब्द में जानकारी. उदाहरण के लिए, CppCompile या GoLink.