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) { ... } ... }
- getopt(1) मैन पेज
- Python का "optparse" मॉड्यूल (http://docs.python.org/library/optparse.html)
- POSIX "यूटिलिटी सिंटैक्स के दिशा-निर्देश" (http://www.opengroup.org/onlinepubs/000095399/basedefs/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)
यह कमांड-लाइन आर्ग्युमेंट 'args' को पार्स करता है. साथ ही, कंस्ट्रक्टर के लिए दिए गए '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 |
एक स्ट्रिंग, जिसमें सभी विकल्प फ़ील्ड के लिए, उपयोगकर्ता के हिसाब से सहायता टेक्स्ट शामिल है |
पार्स
publicparse (String... args)
यह कमांड-लाइन आर्ग्युमेंट 'args' को पार्स करता है. साथ ही, कंस्ट्रक्टर के लिए दिए गए '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 |