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 आर्ग्युमेंट को नेमस्पेस किया जा सकता है, ताकि किसी ऑब्जेक्ट के Option फ़ील्ड को खास तौर पर रेफ़र किया जा सके. इसके लिए, ऑब्जेक्ट के पूरे क्लास नेम या उसके OptionClass एलियास वैल्यू का इस्तेमाल किया जा सकता है. दोनों को ':' से अलग किया जाता है. जैसे,
--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(Object... optionSources)
यह फ़ंक्शन, एक या उससे ज़्यादा ऑब्जेक्ट के लिए |
|
ArgsOptionParser(Collection<Object> optionSources)
यह फ़ंक्शन, ऑब्जेक्ट के कलेक्शन के लिए |
|
पब्लिक मेथड | |
|---|---|
Set<String>
|
getInopOptions()
यह उन विकल्पों का सेट दिखाता है जिन्होंने डिफ़ॉल्ट वैल्यू में कोई बदलाव नहीं किया है. |
static
String
|
getOptionHelp(boolean importantOnly, Object optionObject)
optionObject में मौजूद सभी |
List<String>
|
parse(List<String> args)
|
List<String>
|
parse(String... args)
यह कंस्ट्रक्टर को दिए गए 'optionSource' के @Option फ़ील्ड सेट करता है. इसके लिए, यह कमांड-लाइन आर्ग्युमेंट 'args' को पार्स करता है. |
List<String>
|
parseBestEffort(List<String> args)
|
List<String>
|
parseBestEffort(List<String> args, boolean forceContinue)
|
List<String>
|
parseBestEffort(String... args)
|
void
|
validateMandatoryOptions()
इस कुकी का काम यह पुष्टि करना है कि ज़रूरी के तौर पर मार्क किए गए सभी फ़ील्ड सेट किए गए हैं. |
सार्वजनिक कंस्ट्रक्टर
ArgsOptionParser
public ArgsOptionParser (Object... optionSources)
यह फ़ंक्शन, एक या उससे ज़्यादा ऑब्जेक्ट के लिए ArgsOptionParser बनाता है.
| पैरामीटर | |
|---|---|
optionSources |
Object: कॉन्फ़िगरेशन ऑब्जेक्ट. |
| थ्रो | |
|---|---|
ConfigurationException |
अगर कॉन्फ़िगरेशन ऑब्जेक्ट को गलत तरीके से कॉन्फ़िगर किया गया है. |
ArgsOptionParser
public ArgsOptionParser (Collection<Object> optionSources)
यह फ़ंक्शन, ऑब्जेक्ट के कलेक्शन के लिए ArgsOptionParser बनाता है.
| पैरामीटर | |
|---|---|
optionSources |
Collection: कॉन्फ़िगरेशन ऑब्जेक्ट. |
| थ्रो | |
|---|---|
ConfigurationException |
अगर कॉन्फ़िगरेशन ऑब्जेक्ट को गलत तरीके से कॉन्फ़िगर किया गया है. |
पब्लिक मेथड
getInopOptions
public Set<String> getInopOptions ()
यह उन विकल्पों का सेट दिखाता है जिन्होंने डिफ़ॉल्ट वैल्यू में कोई बदलाव नहीं किया है.
| रिटर्न | |
|---|---|
Set<String> |
|
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 |
एक स्ट्रिंग, जिसमें सभी विकल्प फ़ील्ड के लिए, उपयोगकर्ता के लिए मददगार टेक्स्ट शामिल होता है |
पार्स करना
public List<String> parse (List<String> args)
ERROR(/#parse(String. args)) का दूसरा तरीका, जिसमें List आर्ग्युमेंट होते हैं
| पैरामीटर | |
|---|---|
args |
List |
| रिटर्न | |
|---|---|
List<String> |
यह एक List है. इसमें सभी विकल्पों को प्रोसेस करने के बाद बचे हुए पोज़िशनल आर्ग्युमेंट शामिल होते हैं. |
| थ्रो | |
|---|---|
ConfigurationException |
अगर आर्ग्युमेंट पार्स करते समय गड़बड़ी हुई हो. |
पार्स करना
public List<String> parse (String... args)
यह कंस्ट्रक्टर को दिए गए 'optionSource' के @Option फ़ील्ड सेट करके, कमांड-लाइन आर्ग्युमेंट 'args' को पार्स करता है.
| पैरामीटर | |
|---|---|
args |
String |
| रिटर्न | |
|---|---|
List<String> |
यह List, सभी विकल्पों को प्रोसेस करने के बाद बचे हुए पोज़िशनल आर्ग्युमेंट का होता है. |
| थ्रो | |
|---|---|
ConfigurationException |
अगर आर्ग्युमेंट पार्स करते समय गड़बड़ी हुई हो. |
parseBestEffort
public List<String> parseBestEffort (List<String> args)
ERROR(/#parseBestEffort(String. args)) का दूसरा तरीका, जिसमें List आर्ग्युमेंट होते हैं
| पैरामीटर | |
|---|---|
args |
List |
| रिटर्न | |
|---|---|
List<String> |
बचे हुए तर्कों में से List |
parseBestEffort
public List<String> parseBestEffort (List<String> args,
boolean forceContinue)ERROR(/#parseBestEffort(String. args)) का दूसरा तरीका, जो List आर्ग्युमेंट लेता है. साथ ही, इसे आखिर तक पार्स करने के लिए मजबूर किया जा सकता है. भले ही, कुछ आर्ग्युमेंट पार्स न हों.
| पैरामीटर | |
|---|---|
args |
List: यह सूची, बचे हुए आर्ग्युमेंट को शामिल करेगी. |
forceContinue |
boolean: अगर कुछ आर्ग्युमेंट पार्स नहीं होते हैं, तब भी पार्स करना जारी रखना है, तो यह वैल्यू सही होती है. |
| रिटर्न | |
|---|---|
List<String> |
बचे हुए तर्कों में से List |
parseBestEffort
public List<String> parseBestEffort (String... args)
ERROR(/#parse(String. args)) का सबसे अच्छा वर्शन. अगर कोई ConfigurationException थ्रो किया जाता है, तो उस अपवाद को अंदरूनी तौर पर कैप्चर किया जाता है. साथ ही, बाकी के आर्ग्युमेंट (इसमें वह आर्ग्युमेंट भी शामिल होता है जिसकी वजह से अपवाद थ्रो किया गया था) वापस कर दिए जाते हैं. यह तरीका कोई अपवाद नहीं दिखाता.
| पैरामीटर | |
|---|---|
args |
String |
| रिटर्न | |
|---|---|
List<String> |
बचे हुए तर्कों में से List |
validateMandatoryOptions
public void validateMandatoryOptions ()
इस कुकी का काम यह पुष्टि करना है कि ज़रूरी के तौर पर मार्क किए गए सभी फ़ील्ड सेट किए गए हैं.
| थ्रो | |
|---|---|
|
com.android.tradefed.config.ConfigurationException |
ConfigurationException |
|