आर्ग्स

समस्या की शिकायत करें सोर्स देखें Nightly · 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

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

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

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

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

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

  • जो वैल्यू पहले से ही स्ट्रिंग हैं उन्हें वैसे ही छोड़ दिया जाता है.
  • File ऑब्जेक्ट को उनकी File.path वैल्यू में बदल दिया जाता है.
  • अन्य सभी टाइप को तय नहीं किए गए तरीके से स्ट्रिंग में बदल दिया जाता है. इस वजह से, आपको 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 होना चाहिए. सूची, टपल, डिप्सेट या डायरेक्ट्री File को इस तरीके के बजाय, add_all() या add_joined() को पास किया जाना चाहिए.
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; या None; डिफ़ॉल्ट None है
यह एक फ़ंक्शन है, जो हर आइटम को शून्य या उससे ज़्यादा स्ट्रिंग में बदलता है. इन्हें जोड़ने से पहले, आगे प्रोसेस किया जा सकता है. अगर यह पैरामीटर नहीं दिया जाता है, तो स्टैंडर्ड कन्वर्ज़न का इस्तेमाल किया जाता है.

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

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

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

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

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

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

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

set_param_file_format

Args Args.set_param_file_format(format)

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

पैरामीटर

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

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

use_param_file

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

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

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

पैरामीटर

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

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

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