आर्ग्स

समस्या की शिकायत करें सोर्स देखें Nightly · 8.4 · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

यह एक ऐसा ऑब्जेक्ट है जो मेमोरी का कम इस्तेमाल करके, कमांड लाइन का कुछ हिस्सा या पूरा हिस्सा बनाने के लिए ज़रूरी डेटा को कैप्सूल करता है.

ऐसा अक्सर होता है कि किसी कार्रवाई के लिए, ट्रांज़िटिव डिपेंडेंसी से इकट्ठा की गई वैल्यू वाली बड़ी कमांड लाइन की ज़रूरत होती है. उदाहरण के लिए, लिंकर कमांड लाइन में लिंक की जा रही सभी लाइब्रेरी के लिए ज़रूरी हर ऑब्जेक्ट फ़ाइल की सूची दी जा सकती है. ऐसे ट्रांज़िटिव डेटा को depset में सेव करना सबसे सही तरीका है, ताकि उन्हें कई टारगेट के साथ शेयर किया जा सके. हालांकि, अगर नियम बनाने वाले व्यक्ति को किसी कार्रवाई की कमांड लाइन बनाने के लिए, इन डिपसेट को स्ट्रिंग की सूचियों में बदलना पड़ता है, तो मेमोरी शेयर करने के इस ऑप्टिमाइज़ेशन का कोई फ़ायदा नहीं होगा.

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

Args को ctx.actions.args() को कॉल करके बनाया जाता है. इन्हें ctx.actions.run() या ctx.actions.run_shell() के arguments पैरामीटर के तौर पर पास किया जा सकता है. Args ऑब्जेक्ट के हर म्यूटेशन से, वैल्यू को फ़ाइनल कमांड लाइन में जोड़ा जाता है.

map_each सुविधा की मदद से, यह तय किया जा सकता है कि आइटम को स्ट्रिंग में कैसे बदला जाए. अगर आपने map_each फ़ंक्शन नहीं दिया है, तो स्टैंडर्ड कन्वर्ज़न इस तरह से होता है:

  • जो वैल्यू पहले से स्ट्रिंग हैं उन्हें वैसे ही रहने दिया जाता है.
  • File ऑब्जेक्ट को उनकी File.path वैल्यू में बदल दिया जाता है.
  • Label ऑब्जेक्ट को स्ट्रिंग के तौर पर दिखाया जाता है. मुख्य रिपॉज़िटरी के कॉन्टेक्स्ट में हल किए जाने पर, यह स्ट्रिंग उसी ऑब्जेक्ट में बदल जाती है. अगर हो सके, तो स्ट्रिंग के तौर पर दिखाए गए नाम में, रिपॉज़िटरी के कैननिकल नाम के बजाय रिपॉज़िटरी के असली नाम का इस्तेमाल किया जाता है. इससे इस नाम का इस्तेमाल BUILD फ़ाइलों में किया जा सकता है. हालांकि, यह ज़रूरी नहीं है कि आपको इसी तरह का जवाब मिले, लेकिन आम तौर पर जवाब में //foo:bar, @repo//foo:bar, और @@canonical_name+//foo:bar.bzl जैसे उदाहरण शामिल होते हैं.
  • अन्य सभी टाइप को unspecified तरीके से स्ट्रिंग में बदल दिया जाता है. इसलिए, आपको add() को ऐसी वैल्यू पास नहीं करनी चाहिए जो स्ट्रिंग या File टाइप की न हों. अगर आपको उन्हें add_all() या add_joined() को पास करना है, तो आपको map_each फ़ंक्शन देना चाहिए.

स्ट्रिंग फ़ॉर्मैटिंग (add*() तरीकों के format, format_each, और format_joined पैरामीटर) का इस्तेमाल करते समय, फ़ॉर्मैट टेंप्लेट को स्ट्रिंग पर %-सबस्टिट्यूशन की तरह ही समझा जाता है. हालांकि, टेंप्लेट में सिर्फ़ एक सबस्टिट्यूशन प्लेसहोल्डर होना चाहिए और वह %s होना चाहिए. लिटरल प्रतिशत को %% के तौर पर एस्केप किया जा सकता है. ऊपर दिए गए तरीके के मुताबिक, वैल्यू को स्ट्रिंग में बदलने के बाद फ़ॉर्मैटिंग लागू की जाती है.

add*() के हर तरीके का एक वैकल्पिक फ़ॉर्म होता है. यह एक अतिरिक्त पोज़ीशनल पैरामीटर स्वीकार करता है. साथ ही, यह "arg name" स्ट्रिंग को बाकी के आर्ग्युमेंट से पहले डालने की अनुमति देता है. अगर क्रम खाली है, तो add_all और add_joined के लिए अतिरिक्त स्ट्रिंग नहीं जोड़ी जाएगी. उदाहरण के लिए, एक ही इस्तेमाल से कमांड लाइन में --foo val1 val2 val3 --bar या सिर्फ़ --bar जोड़ा जा सकता है. यह इस बात पर निर्भर करता है कि दिए गए क्रम में val1..val3 शामिल है या वह खाली है.

अगर कमांड लाइन का साइज़, सिस्टम की तय सीमा से ज़्यादा हो जाता है, तो आर्ग्युमेंट को पैरामीटर फ़ाइलों में ट्रांसफ़र किया जा सकता है. use_param_file() और set_param_file_format() देखें.

उदाहरण: मान लीजिए कि हमें यह कमांड लाइन जनरेट करनी है:

--foo foo1.txt foo2.txt ... fooN.txt --bar bar1.txt,bar2.txt,...,barM.txt --baz
हम यहां दिए गए Args ऑब्जेक्ट का इस्तेमाल कर सकते हैं:
# foo_deps and bar_deps are depsets containing
# File objects for the foo and bar .txt files.
args = ctx.actions.args()
args.add_all("--foo", foo_deps)
args.add_joined("--bar", bar_deps, join_with=",")
args.add("--baz")
ctx.actions.run(
  ...
  arguments = [args],
  ...
)

सदस्य

जोड़ें

Args Args.add(arg_name_or_value, value=unbound, *, format=None)

इस कमांड लाइन में एक आर्ग्युमेंट जोड़ता है.

पैरामीटर

पैरामीटर ब्यौरा
arg_name_or_value ज़रूरी है
अगर दो पोज़ीशनल पैरामीटर पास किए जाते हैं, तो इसे आर्ग्युमेंट के नाम के तौर पर माना जाता है. आर्ग्युमेंट का नाम, वैल्यू से पहले बिना किसी प्रोसेसिंग के जोड़ा जाता है. अगर सिर्फ़ एक पोज़ीशनल पैरामीटर पास किया जाता है, तो इसे value के तौर पर माना जाता है (नीचे देखें).
value डिफ़ॉल्ट वैल्यू unbound
है यह वह ऑब्जेक्ट है जिसे जोड़ना है. इसे ऊपर बताए गए स्टैंडर्ड कन्वर्ज़न का इस्तेमाल करके, स्ट्रिंग में बदल दिया जाएगा. इस फ़ंक्शन के लिए कोई map_each पैरामीटर नहीं है. इसलिए, value को स्ट्रिंग या File होना चाहिए. इस तरीके के बजाय, add_all() या add_joined() को सूची, टपल, डिप्सेट या डायरेक्ट्री File पास की जानी चाहिए.
format string या None; डिफ़ॉल्ट रूप से None
होता है यह फ़ॉर्मैट स्ट्रिंग पैटर्न है, जिसे value के स्ट्रिंग वर्शन पर लागू किया जाता है.

add_all

Args Args.add_all(arg_name_or_values, values=unbound, *, map_each=None, format_each=None, before_each=None, omit_if_empty=True, uniquify=False, expand_directories=True, terminate_with=None, allow_closure=False)

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

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

  1. हर डायरेक्ट्री File आइटम को, उस डायरेक्ट्री में मौजूद सभी File से बदल दिया जाता है.
  2. अगर map_each दिया गया है, तो इसे हर आइटम पर लागू किया जाता है. इसके बाद, स्ट्रिंग की सूचियों को जोड़कर, शुरुआती तर्क की सूची बनाई जाती है. इसके अलावा, शुरुआती तर्क सूची, हर आइटम पर स्टैंडर्ड कन्वर्ज़न लागू करने का नतीजा होती है.
  3. अगर सूची में कोई तर्क मौजूद है, तो उसे format_each के साथ फ़ॉर्मैट किया जाता है.
  4. अगर uniquify सही है, तो डुप्लीकेट आर्ग्युमेंट हटा दिए जाते हैं. पहली बार दिखने वाला आइटम ही बना रहता है.
  5. अगर कोई before_each स्ट्रिंग दी जाती है, तो इसे सूची में मौजूद हर आर्ग्युमेंट से पहले, नए आर्ग्युमेंट के तौर पर डाला जाता है. इससे इस पॉइंट तक जोड़े जाने वाले तर्कों की संख्या दोगुनी हो जाती है.
  6. अगर सूची खाली है और omit_if_empty की वैल्यू सही है (डिफ़ॉल्ट रूप से), तो आर्ग्युमेंट का नाम और terminate_with को पहले और आखिरी आर्ग्युमेंट के तौर पर डाला जाता है. हालांकि, ऐसा तब होता है, जब ये दिए गए हों.
ध्यान दें कि खाली स्ट्रिंग ऐसे मान्य आर्ग्युमेंट होते हैं जिन पर प्रोसेसिंग के ये सभी चरण लागू होते हैं.

पैरामीटर

पैरामीटर ब्यौरा
arg_name_or_values ज़रूरी है
अगर दो पोज़ीशनल पैरामीटर पास किए जाते हैं, तो इसे आर्ग्युमेंट के नाम के तौर पर माना जाता है. आर्ग्युमेंट के नाम को values से पहले, अलग आर्ग्युमेंट के तौर पर जोड़ा जाता है. इसमें कोई बदलाव नहीं किया जाता. अगर omit_if_empty की वैल्यू 'सही है' (डिफ़ॉल्ट) पर सेट है और कोई अन्य आइटम नहीं जोड़ा गया है, तो इस आर्ग्युमेंट का नाम नहीं जोड़ा जाएगा. ऐसा तब होता है, जब values खाली हो या उसके सभी आइटम फ़िल्टर किए गए हों. अगर सिर्फ़ एक पोज़ीशनल पैरामीटर पास किया जाता है, तो इसे values के तौर पर माना जाता है (नीचे देखें).
values sequence; या depset; डिफ़ॉल्ट रूप से unbound
होता है वह सूची, टपल या depset जिसके आइटम जोड़े जाएंगे.
map_each callable; or None; default is None
A function that converts each item to zero or more strings, which may be further processed before appending. अगर यह पैरामीटर उपलब्ध नहीं कराया जाता है, तो स्टैंडर्ड कन्वर्ज़न का इस्तेमाल किया जाता है.

इस फ़ंक्शन को एक या दो पोज़िशनल आर्ग्युमेंट पास किए जाते हैं: पहला, बदलने के लिए आइटम और दूसरा, वैकल्पिक DirectoryExpander. दूसरा आर्ग्युमेंट सिर्फ़ तब पास किया जाएगा, जब दिया गया फ़ंक्शन उपयोगकर्ता के तय किए गए (बिल्ट-इन नहीं) फ़ंक्शन के तौर पर हो और एक से ज़्यादा पैरामीटर का एलान करता हो.

आइटम के लिए कितने आर्ग्युमेंट जनरेट करने हैं, इसके आधार पर रिटर्न वैल्यू का टाइप तय होता है:

  • आम तौर पर, जब हर आइटम एक स्ट्रिंग में बदल जाता है, तो फ़ंक्शन को उस स्ट्रिंग को दिखाना चाहिए.
  • अगर आइटम को पूरी तरह से फ़िल्टर करना है, तो फ़ंक्शन को None वैल्यू दिखानी चाहिए.
  • अगर आइटम कई स्ट्रिंग में बदल जाता है, तो फ़ंक्शन उन स्ट्रिंग की सूची दिखाता है.
एक स्ट्रिंग या None को वापस लाने का मतलब है कि लंबाई 1 या लंबाई 0 वाली सूची को वापस लाया गया है. हालांकि, जहां सूची बनाने की ज़रूरत नहीं है वहां सूची न बनाना ज़्यादा सही और आसानी से समझा जा सकता है.

आम तौर पर, जब expand_directories=True सेट होता है, तो डायरेक्ट्री वाले आइटम अपने-आप खुल जाते हैं, ताकि उनके कॉन्टेंट को देखा जा सके. हालांकि, इससे अन्य वैल्यू में मौजूद डायरेक्ट्री नहीं बढ़ेंगी. उदाहरण के लिए, जब आइटम ऐसे स्ट्रक्चर होते हैं जिनमें फ़ील्ड के तौर पर डायरेक्ट्री होती हैं. इस स्थिति में, किसी डायरेक्ट्री की फ़ाइलें मैन्युअल तरीके से पाने के लिए, DirectoryExpander आर्ग्युमेंट का इस्तेमाल किया जा सकता है.

विश्लेषण के चरण में इस्तेमाल किए गए बड़े डेटा स्ट्रक्चर को एक्ज़ीक्यूशन के चरण में अनजाने में बनाए रखने से बचने के लिए, map_each फ़ंक्शन को टॉप-लेवल के def स्टेटमेंट से एलान करना होगा. यह डिफ़ॉल्ट रूप से नेस्ट किया गया फ़ंक्शन क्लोज़र नहीं हो सकता.

चेतावनी: map_each को कॉल करने के दौरान, print() स्टेटमेंट को एक्ज़ीक्यूट करने पर कोई आउटपुट नहीं दिखेगा.

format_each string; या None; डिफ़ॉल्ट रूप से None
होता है यह फ़ॉर्मैट स्ट्रिंग पैटर्न है. इसे map_each फ़ंक्शन से मिले हर स्ट्रिंग पर लागू किया जाता है. फ़ॉर्मैट स्ट्रिंग में सिर्फ़ एक '%s' प्लेसहोल्डर होना चाहिए.
before_each string या None; डिफ़ॉल्ट तौर पर None
होता है यह एक ऐसा आर्ग्युमेंट है जिसे values से मिले हर आर्ग्युमेंट से पहले जोड़ा जा सकता है.
omit_if_empty bool; डिफ़ॉल्ट रूप से True
होता है अगर यह 'सही' है और values से कोई आर्ग्युमेंट नहीं मिला है, तो आगे की सभी प्रोसेस बंद हो जाएंगी और कमांड लाइन में कोई बदलाव नहीं होगा. अगर यह वैल्यू 'गलत है' पर सेट है, तो आर्ग्युमेंट का नाम और terminate_with (अगर दिया गया है) अब भी जोड़ा जाएगा. भले ही, अन्य आर्ग्युमेंट मौजूद हों या न हों.
uniquify bool; डिफ़ॉल्ट तौर पर False
है अगर यह 'सही' है, तो values से मिले डुप्लीकेट आर्ग्युमेंट हटा दिए जाएंगे. हर आर्ग्युमेंट का सिर्फ़ पहला उदाहरण दिखेगा. आम तौर पर, इस सुविधा की ज़रूरत नहीं होती, क्योंकि depsets पहले से ही डुप्लीकेट आइटम हटा देते हैं. हालांकि, अगर map_each कई आइटम के लिए एक ही स्ट्रिंग दिखाता है, तो यह सुविधा काम की हो सकती है.
expand_directories bool; डिफ़ॉल्ट तौर पर True
है अगर यह 'सही' है, तो values में मौजूद सभी डायरेक्ट्री को फ़ाइलों की फ़्लैट सूची में बड़ा किया जाएगा. ऐसा map_each लागू होने से पहले होता है.
terminate_with string या None; डिफ़ॉल्ट तौर पर None
होता है यह एक ज़रूरी नहीं है. इसका इस्तेमाल, अन्य सभी आर्ग्युमेंट के बाद जोड़ने के लिए किया जाता है. अगर omit_if_empty की वैल्यू 'सही है' (डिफ़ॉल्ट वैल्यू) और कोई अन्य आइटम नहीं जोड़ा गया है, तो इस तर्क को नहीं जोड़ा जाएगा. ऐसा तब होता है, जब values खाली हो या उसके सभी आइटम फ़िल्टर किए गए हों.
allow_closure bool; डिफ़ॉल्ट तौर पर False
होता है अगर सही है, तो map_each जैसे फ़ंक्शन पैरामीटर में क्लोज़र का इस्तेमाल करने की अनुमति देता है. आम तौर पर, इसकी ज़रूरत नहीं होती. इससे, विश्लेषण के चरण के बड़े डेटा स्ट्रक्चर को लागू करने के चरण में बनाए रखने का जोखिम होता है.

add_joined

Args Args.add_joined(arg_name_or_values, values=unbound, *, join_with, map_each=None, format_each=None, format_joined=None, omit_if_empty=True, uniquify=False, expand_directories=True, allow_closure=False)

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

प्रोसेसिंग, add_all() की तरह ही होती है. हालांकि, values से मिले तर्कों की सूची को join_with.join(...) की तरह एक ही तर्क में जोड़ दिया जाता है. इसके बाद, दिए गए format_joined स्ट्रिंग टेंप्लेट का इस्तेमाल करके फ़ॉर्मैट किया जाता है. add_all() के उलट, इसमें before_each या terminate_with पैरामीटर नहीं होता, क्योंकि जब आइटम को एक ही आर्ग्युमेंट में शामिल किया जाता है, तो ये आम तौर पर काम के नहीं होते.

अगर फ़िल्टर करने के बाद, किसी आर्ग्युमेंट में शामिल करने के लिए कोई स्ट्रिंग नहीं है और omit_if_empty की वैल्यू 'सही' (डिफ़ॉल्ट) है, तो कोई प्रोसेसिंग नहीं की जाती. अगर जोड़ने के लिए कोई स्ट्रिंग नहीं है, लेकिन omit_if_empty की वैल्यू 'गलत' है, तो जोड़ी गई स्ट्रिंग एक खाली स्ट्रिंग होगी.

पैरामीटर

पैरामीटर ब्यौरा
arg_name_or_values ज़रूरी है
अगर दो पोज़ीशनल पैरामीटर पास किए जाते हैं, तो इसे आर्ग्युमेंट के नाम के तौर पर माना जाता है. आर्ग्युमेंट का नाम, values से पहले बिना किसी प्रोसेसिंग के जोड़ दिया जाता है. अगर omit_if_empty की वैल्यू 'सही है' (डिफ़ॉल्ट) और values से कोई स्ट्रिंग नहीं मिलती है, तो इस आर्ग्युमेंट को नहीं जोड़ा जाएगा. ऐसा तब हो सकता है, जब values खाली हो या इसके सभी आइटम फ़िल्टर किए गए हों. अगर सिर्फ़ एक पोज़ीशनल पैरामीटर पास किया जाता है, तो इसे values के तौर पर माना जाता है (नीचे देखें).
values sequence; या depset; डिफ़ॉल्ट रूप से unbound
होता है वह सूची, टपल या depset जिसके आइटम जोड़े जाएंगे.
join_with string; ज़रूरी है
यह एक डिलिमिटर स्ट्रिंग है. इसका इस्तेमाल map_each और format_each को लागू करने से मिली स्ट्रिंग को एक साथ जोड़ने के लिए किया जाता है. यह string.join() की तरह ही काम करता है.
map_each callable; या None; डिफ़ॉल्ट रूप से None
होता है यह add_all के लिए तय की गई वैल्यू के बराबर होता है.
format_each string; या None; डिफ़ॉल्ट रूप से None
होता है add_all के लिए इस्तेमाल किए गए फ़ॉर्मैट के जैसा ही फ़ॉर्मैट.
format_joined string; या None; डिफ़ॉल्ट तौर पर None
होता है यह एक फ़ॉर्मैट स्ट्रिंग पैटर्न है, जिसे जोड़ी गई स्ट्रिंग पर लागू किया जाता है. फ़ॉर्मैट स्ट्रिंग में सिर्फ़ एक '%s' प्लेसहोल्डर होना चाहिए.
omit_if_empty bool; डिफ़ॉल्ट वैल्यू True
है अगर यह वैल्यू सही है, तो values खाली होने या इसके सभी आइटम फ़िल्टर किए जाने की वजह से, अगर जोड़ने के लिए कोई स्ट्रिंग नहीं है, तो आगे की सभी प्रोसेसिंग बंद कर दी जाएगी और कमांड लाइन में कोई बदलाव नहीं होगा. अगर यह विकल्प गलत है, तो दो आर्ग्युमेंट जोड़े जाएंगे. भले ही, जोड़ने के लिए कोई स्ट्रिंग न हो. पहला आर्ग्युमेंट, आर्ग्युमेंट का नाम होगा. इसके बाद, एक खाली स्ट्रिंग जोड़ी जाएगी. यह खाली स्ट्रिंग, शून्य स्ट्रिंग का लॉजिकल जॉइन है.
uniquify bool; डिफ़ॉल्ट रूप से False
होता है यह add_all के लिए इस्तेमाल किए जाने वाले फ़्लैग जैसा ही है.
expand_directories bool; डिफ़ॉल्ट रूप से True
होता है यह add_all के लिए इस्तेमाल किए जाने वाले फ़्लैग जैसा ही है.
allow_closure bool; डिफ़ॉल्ट रूप से False
होता है यह add_all के लिए इस्तेमाल किए जाने वाले फ़्लैग जैसा ही है.

set_param_file_format

Args Args.set_param_file_format(format)

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

पैरामीटर

पैरामीटर ब्यौरा
format string; ज़रूरी है
इनमें से कोई एक होना चाहिए:
  • "multiline": हर आइटम (आर्ग्युमेंट का नाम या वैल्यू) को param फ़ाइल में लिखा जाता है. इसके बाद, नई लाइन का वर्ण होता है.
  • "shell": यह "multiline" के जैसा ही होता है, लेकिन इसमें आइटम को शेल-कोट किया जाता है
  • "flag_per_line": यह "multiline" के जैसा ही होता है. हालांकि, (1) पैरामीटर फ़ाइल में सिर्फ़ फ़्लैग ('--' से शुरू होने वाले) लिखे जाते हैं और (2) अगर फ़्लैग की कोई वैल्यू है, तो उसे '=' सेपरेटर के साथ उसी लाइन में लिखा जाता है. यह Abseil फ़्लैग लाइब्रेरी का फ़ॉर्मैट है.

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

use_param_file

Args Args.use_param_file(param_file_arg, *, use_always=False)

यह फ़ंक्शन, आर्ग्युमेंट को params फ़ाइल में डालता है और उन्हें param फ़ाइल के पॉइंटर से बदल देता है. इस विकल्प का इस्तेमाल तब करें, जब आपके आर्ग्युमेंट सिस्टम की कमांड की लंबाई की सीमाओं के हिसाब से बहुत बड़े हों.

Bazel, बेहतर परफ़ॉर्मेंस के लिए, एक्ज़ीक्यूशन के दौरान आउटपुट ट्री में params फ़ाइल को न लिखने का विकल्प चुन सकता है. अगर आपको कार्रवाइयों को डीबग करना है और पैरामीटर फ़ाइल की जांच करनी है, तो अपने बिल्ड में --materialize_param_files पास करें.

पैरामीटर

पैरामीटर ब्यौरा
param_file_arg string; required
यह एक फ़ॉर्मैट स्ट्रिंग है, जिसमें सिर्फ़ एक "%s" होता है. अगर आर्ग्युमेंट को params फ़ाइल में स्पिल किया जाता है, तो उन्हें इस स्ट्रिंग वाले आर्ग्युमेंट से बदल दिया जाता है. इस स्ट्रिंग को params फ़ाइल के पाथ के साथ फ़ॉर्मैट किया जाता है.

उदाहरण के लिए, अगर आर्ग्युमेंट को "params.txt" नाम की फ़ाइल में सेव किया जाता है, तो "--file=%s" को तय करने से, कार्रवाई की कमांड लाइन में "--file=params.txt" शामिल हो जाएगा.

use_always bool; डिफ़ॉल्ट रूप से False
होता है क्या हमेशा पैरामीटर फ़ाइल में आर्ग्युमेंट स्पिल करने हैं. अगर यह वैल्यू 'गलत है', तो Bazel यह तय करेगा कि आपके सिस्टम और आर्ग्युमेंट की लंबाई के आधार पर, आर्ग्युमेंट को स्पिल करने की ज़रूरत है या नहीं.