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 बनाता है.

ArgsOptionParser(Collection<Object> optionSources)

यह फ़ंक्शन, ऑब्जेक्ट के कलेक्शन के लिए ArgsOptionParser बनाता है.

पब्लिक मेथड

Set<String> getInopOptions()

यह उन विकल्पों का सेट दिखाता है जिन्होंने डिफ़ॉल्ट वैल्यू में कोई बदलाव नहीं किया है.

static String getOptionHelp(boolean importantOnly, Object optionObject)

optionObject में मौजूद सभी Option फ़ील्ड के लिए, सहायता वाला टेक्स्ट आउटपुट करें.

List<String> parse(List<String> args)

ERROR(/#parse(String. args)) का दूसरा तरीका, जिसमें List आर्ग्युमेंट होते हैं

List<String> parse(String... args)

यह कंस्ट्रक्टर को दिए गए 'optionSource' के @Option फ़ील्ड सेट करता है. इसके लिए, यह कमांड-लाइन आर्ग्युमेंट 'args' को पार्स करता है.

List<String> parseBestEffort(List<String> args)

ERROR(/#parseBestEffort(String. args)) का दूसरा तरीका, जिसमें List आर्ग्युमेंट होते हैं

List<String> parseBestEffort(List<String> args, boolean forceContinue)

ERROR(/#parseBestEffort(String. args)) का दूसरा तरीका, जो List आर्ग्युमेंट लेता है. साथ ही, इसे आखिर तक पार्स करने के लिए मजबूर किया जा सकता है. भले ही, कुछ आर्ग्युमेंट पार्स न हों.

List<String> parseBestEffort(String... args)

ERROR(/#parse(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