ArgsOptionParser
public
class
ArgsOptionParser
extends OptionSetter
java.lang.Object | ||
↳ | com.android.tradefed.config.OptionSetter | |
↳ | com.android.tradefed.config.ArgsOptionParser |
पार्स किए गए कमांड लाइन आर्ग्युमेंट से Option
फ़ील्ड को पॉप्युलेट करता है.
पास की गई String[] में मौजूद स्ट्रिंग को बाएं से दाएं पार्स किया जाता है. हर स्ट्रिंग को छोटे विकल्प (जैसे, "-v"), लंबे विकल्प (जैसे, "--verbose"), विकल्प के लिए आर्ग्युमेंट (जैसे, "-f out.txt" में "out.txt") या विकल्प के अलावा पोज़िशनल आर्ग्युमेंट के तौर पर बांटा जाता है.
हर विकल्प के आर्ग्युमेंट को एक या उससे ज़्यादा Option
फ़ील्ड पर मैप करना ज़रूरी है. एक बड़ा विकल्प,
Option
नाम से मैप हो जाता है और एक छोटा विकल्प, Option
के छोटे नाम को मैप करता है. एक ही ऑब्जेक्ट में मौजूद सभी Option
फ़ील्ड के हिसाब से, हर विकल्प का नाम और उसका छोटा नाम यूनीक होना चाहिए.
एक विकल्प वाले आर्ग्युमेंट को कई ऑब्जेक्ट में एक ही नाम वाले कई Option
फ़ील्ड पर मैप किया जा सकता है. Option
आर्ग्युमेंट को नेमस्पेस किया जा सकता है, ताकि किसी ऑब्जेक्ट के पूरे क्लास के नाम या OptionClass
उपनाम की वैल्यू का इस्तेमाल करके, किसी एक ऑब्जेक्ट में Option
फ़ील्ड को यूनीक तरीके से रेफ़र किया जा सके. इसके लिए, ':' से अलग किया जाता है. उदाहरण के लिए,
--classname:optionname optionvalue or --optionclassalias:optionname optionvalue.
छोटा विकल्प, "-" के बाद छोटा विकल्प वर्ण होता है. अगर विकल्प के लिए आर्ग्युमेंट की ज़रूरत है (जो कि किसी भी ग़ैर-बूलियन विकल्प के लिए सही है), तो इसे अलग पैरामीटर के तौर पर लिखा जा सकता है. हालांकि, ऐसा करना ज़रूरी नहीं है. इसका मतलब है कि "-f out.txt" और "-fout.txt", दोनों स्वीकार किए जाते हैं.
एक "-" के बाद, कई छोटे विकल्प दिए जा सकते हैं. हालांकि, ऐसा तब ही किया जा सकता है, जब सभी विकल्पों के लिए आर्ग्युमेंट की ज़रूरत न हो. आखिरी विकल्प के लिए आर्ग्युमेंट की ज़रूरत हो सकती है.
लंबा विकल्प "--" से शुरू होता है. इसके बाद, कई वर्ण होते हैं. अगर विकल्प के लिए आर्ग्युमेंट की ज़रूरत है, तो उसे विकल्प के नाम के बाद लिखा जा सकता है. इसके लिए, "=" का इस्तेमाल करें या अगले आर्ग्युमेंट के तौर पर लिखें. (जैसे, "--file=out.txt" या "--file out.txt".)
बूलियन लॉन्ग विकल्प '--name' को अपने-आप '--no-name' कंपैनियन मिल जाता है. "--flag" विकल्प दिया गया है, तो "--flag", "--no-flag", "--flag=true", और "--flag=false" सभी मान्य हैं. हालांकि, "--flag true" और "--flag false", दोनों का इस्तेमाल नहीं किया जा सकता. ऐसा इसलिए है, क्योंकि "--flag" अपने-आप काफ़ी है. इसके बाद, "true" या "false" का अलग से इस्तेमाल किया जाता है. "सही" और "गलत" के लिए समानार्थी शब्दों के तौर पर, "हां" और "नहीं" का इस्तेमाल किया जा सकता है.
"-" से शुरू न होने वाली और किसी पिछले विकल्प का ज़रूरी आर्ग्युमेंट न होने वाली हर स्ट्रिंग, विकल्प के बजाय पोज़िशनल आर्ग्युमेंट होती है. इसके बाद की सभी स्ट्रिंग भी पोज़िशनल आर्ग्युमेंट होती हैं. "--" के बाद मौजूद हर स्ट्रिंग, एक ऐसा आर्ग्युमेंट होता है जिसे विकल्प के तौर पर नहीं चुना जा सकता.
विकल्पों को प्रोसेस करने के बाद, उनसे जुड़े फ़ील्ड अपडेट हो जाते हैं. बाकी बचे किसी भी पोज़िशनल आर्ग्युमेंट को List<String> के तौर पर दिखाया जाता है.
यहां एक आसान उदाहरण दिया गया है:
// Non-@Option fields will be ignored. class Options { @Option(name = "quiet", shortName = 'q') boolean quiet = false; // Here the user can use --no-color. @Option(name = "color") boolean color = true; @Option(name = "mode", shortName = 'm') String mode = "standard; // Supply a default just by setting the field. @Option(name = "port", shortName = 'p') int portNumber = 8888; // There's no need to offer a short name for rarely-used options. @Option(name = "timeout" ) double timeout = 1.0; @Option(name = "output-file", shortName = 'o' }) File output; // Multiple options are added to the collection. // The collection field itself must be non-null. @Option(name = "input-file", shortName = 'i') List<File> inputs = new ArrayList<File>(); } Options options = new Options(); List<String> posArgs = new OptionParser(options).parse("--input-file", "/tmp/file1.txt"); for (File inputFile : options.inputs) { if (!options.quiet) { ... } ... }यह भी देखें:
- गेटऑप्ट(1) मैन पेज
- Python का "optparse" मॉड्यूल (http://docs.python.org/library/optparse.html)
- POSIX "यूटिलिटी सिंटैक्स दिशा-निर्देश" (http://www.opengroup.org/onlinepubs/000095399/BASEefs/xbd_chap12.html#tag_12_02)
- GNU "कमांड लाइन इंटरफ़ेस के लिए मानक" (http://www.gnu.org/prep/standards/standards.html#Command_002dLine-Interfaces)
इन्हें भी देखें:
खास जानकारी
सार्वजनिक कंस्ट्रक्टर | |
---|---|
ArgsOptionParser(
ऑब्जेक्ट के कलेक्शन के लिए |
|
ArgsOptionParser(Object... optionSources)
एक या उससे ज़्यादा ऑब्जेक्ट के लिए |
सार्वजनिक तरीके | |
---|---|
|
getInopOptions()
उन विकल्पों का सेट दिखाता है जिन्होंने किसी डिफ़ॉल्ट वैल्यू में बदलाव नहीं किया. |
static
String
|
getOptionHelp(boolean importantOnly, Object optionObject)
optionObject में मौजूद सभी |
|
parse(String... args)
यह कमांड लाइन आर्ग्युमेंट 'orgs' को पार्स करता है. साथ ही, कंस्ट्रक्टर को दिए गए 'optionSource' में @Option फ़ील्ड सेट करता है. |
|
parse(
|
|
parseBestEffort(
|
|
parseBestEffort(
|
|
parseBestEffort(String... args)
|
void
|
validateMandatoryOptions()
यह पुष्टि करता है कि ज़रूरी के तौर पर मार्क किए गए सभी फ़ील्ड सेट किए गए हैं. |
सार्वजनिक कंस्ट्रक्टर
ArgsOptionParser
public ArgsOptionParser (optionSources)
ऑब्जेक्ट के कलेक्शन के लिए ArgsOptionParser
बनाता है.
पैरामीटर | |
---|---|
optionSources |
: कॉन्फ़िगरेशन ऑब्जेक्ट. |
थ्रो | |
---|---|
ConfigurationException |
अगर कॉन्फ़िगरेशन ऑब्जेक्ट गलत तरीके से कॉन्फ़िगर किए गए हैं. |
ArgsOptionParser
public ArgsOptionParser (Object... optionSources)
एक या उससे ज़्यादा ऑब्जेक्ट के लिए ArgsOptionParser
बनाता है.
पैरामीटर | |
---|---|
optionSources |
Object : कॉन्फ़िगरेशन ऑब्जेक्ट. |
थ्रो | |
---|---|
ConfigurationException |
अगर कॉन्फ़िगरेशन ऑब्जेक्ट गलत तरीके से कॉन्फ़िगर किए गए हैं. |
सार्वजनिक तरीके
getInopOptions
publicgetInopOptions ()
उन विकल्पों का सेट दिखाता है जिनसे किसी भी डिफ़ॉल्ट वैल्यू में बदलाव नहीं हुआ.
रिटर्न | |
---|---|
|
getOptionHelp
public static String getOptionHelp (boolean importantOnly, Object optionObject)
optionObject में मौजूद सभी Option
फ़ील्ड के लिए, सहायता टेक्स्ट दिखाता है.
हर विकल्प के लिए सहायता टेक्स्ट इस फ़ॉर्मैट में होगा
[-option_shortname, --option_name] [option_description] Default: [current option field's value in optionObject]अगर विकल्प फ़ील्ड में कोई वैल्यू नहीं दी गई है या वह खाली है, तो 'डिफ़ॉल्ट..." टेक्स्ट नहीं दिखेगा.
पैरामीटर | |
---|---|
importantOnly |
boolean : अगर true सिर्फ़ अहम विकल्पों के लिए मदद प्रिंट करता है |
optionObject |
Object : वह ऑब्जेक्ट जिसके लिए सहायता टेक्स्ट प्रिंट करना है |
रिटर्न | |
---|---|
String |
एक स्ट्रिंग, जिसमें सभी विकल्प फ़ील्ड के लिए, उपयोगकर्ता के हिसाब से सहायता टेक्स्ट शामिल है |
parse
publicparse (String... args)
यह कमांड लाइन आर्ग्युमेंट 'orgs' को पार्स करता है. साथ ही, कंस्ट्रक्टर को दिए गए 'optionSource' में @Option फ़ील्ड सेट करता है.
पैरामीटर | |
---|---|
args |
String |
रिटर्न | |
---|---|
|
सभी विकल्पों को प्रोसेस करने के बाद बचे हुए पोज़िशनल आर्ग्युमेंट का ERROR(/List) . |
थ्रो | |
---|---|
ConfigurationException |
अगर आर्ग्युमेंट को पार्स करते समय कोई गड़बड़ी होती है. |
पार्स
publicparse ( args)
parse(String)
का वैकल्पिक तरीका, जिसमें ERROR(/List)
आर्ग्युमेंट होते हैं
पैरामीटर | |
---|---|
args |
|
रिटर्न | |
---|---|
|
सभी विकल्पों को प्रोसेस करने के बाद बचे हुए पोज़िशनल आर्ग्युमेंट का ERROR(/List) . |
थ्रो | |
---|---|
ConfigurationException |
अगर आर्ग्युमेंट को पार्स करते समय कोई गड़बड़ी होती है. |
parseBestEffort
publicparseBestEffort ( args)
parseBestEffort(String)
का वैकल्पिक तरीका, जिसमें ERROR(/List)
आर्ग्युमेंट होते हैं
पैरामीटर | |
---|---|
args |
|
रिटर्न | |
---|---|
|
बचे हुए आर्ग्युमेंट में से ERROR(/List) |
parseBestEffort
publicparseBestEffort ( args, boolean forceContinue)
parseBestEffort(String)
वाला दूसरा तरीका, जिसमें ERROR(/List)
आर्ग्युमेंट
लिए जाते हैं. साथ ही, आखिर तक पार्स करना जारी रखा जा सकता है, भले ही कुछ आर्ग्युमेंट पार्स न हों.
पैरामीटर | |
---|---|
args |
: इस सूची में बाकी बचे आर्ग्युमेंट शामिल होंगे. |
forceContinue |
boolean : अगर कुछ आर्ग्युमेंट पार्स नहीं होते, तब भी पार्स करना जारी रखना चाहिए, तो यह वैल्यू 'सही' पर सेट करें. |
रिटर्न | |
---|---|
|
बचे हुए आर्ग्युमेंट में से ERROR(/List) |
parseBestEffort
publicparseBestEffort (String... args)
parse(String)
का ऐसा वर्शन जिसे जल्द से जल्द उपलब्ध कराने की पूरी कोशिश की जाती है. अगर कोई ConfigurationException दिखता है, तो उस अपवाद को अंदरूनी तौर पर कैप्चर किया जाता है. साथ ही, बाकी आर्ग्युमेंट (जिस आर्ग्युमेंट की वजह से अपवाद दिखता है उसे भी शामिल करके) दिखाए जाते हैं. यह तरीका कोई गड़बड़ी नहीं दिखाता.
पैरामीटर | |
---|---|
args |
String |
रिटर्न | |
---|---|
|
बचे हुए आर्ग्युमेंट में से ERROR(/List) |
validateMandatoryOptions
public void validateMandatoryOptions ()
यह पुष्टि करता है कि ज़रूरी के तौर पर मार्क किए गए सभी फ़ील्ड सेट किए गए हैं.
थ्रो | |
---|---|
|
com.android.tradefed.config.ConfigurationException |
ConfigurationException |