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( optionSources)

ऑब्जेक्ट के कलेक्शन के लिए ArgsOptionParser बनाता है.

ArgsOptionParser(Object... optionSources)

एक या उससे ज़्यादा ऑब्जेक्ट के लिए ArgsOptionParser बनाता है.

सार्वजनिक तरीके

getInopOptions()

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

static String getOptionHelp(boolean importantOnly, Object optionObject)

optionObject में मौजूद सभी Option फ़ील्ड के लिए, सहायता टेक्स्ट दिखाता है.

parse(String... args)

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

parse( args)

parse(String) का वैकल्पिक तरीका, जिसमें ERROR(/List) आर्ग्युमेंट होते हैं

parseBestEffort( args)

parseBestEffort(String) का वैकल्पिक तरीका, जिसमें ERROR(/List) आर्ग्युमेंट होते हैं

parseBestEffort( args, boolean forceContinue)

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

parseBestEffort(String... args)

parse(String) का सबसे बेहतर वर्शन.

void validateMandatoryOptions()

यह पुष्टि करता है कि ज़रूरी के तौर पर मार्क किए गए सभी फ़ील्ड सेट किए गए हैं.

सार्वजनिक कंस्ट्रक्टर

ArgsOptionParser

public ArgsOptionParser ( optionSources)

ऑब्जेक्ट के कलेक्शन के लिए ArgsOptionParser बनाता है.

पैरामीटर
optionSources : कॉन्फ़िगरेशन ऑब्जेक्ट.

थ्रो
ConfigurationException अगर कॉन्फ़िगरेशन ऑब्जेक्ट गलत तरीके से कॉन्फ़िगर किए गए हैं.

ArgsOptionParser

public ArgsOptionParser (Object... optionSources)

एक या उससे ज़्यादा ऑब्जेक्ट के लिए ArgsOptionParser बनाता है.

पैरामीटर
optionSources Object: कॉन्फ़िगरेशन ऑब्जेक्ट.

थ्रो
ConfigurationException अगर कॉन्फ़िगरेशन ऑब्जेक्ट गलत तरीके से कॉन्फ़िगर किए गए हैं.

सार्वजनिक तरीके

getInopOptions

public  getInopOptions ()

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

रिटर्न

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

public  parse (String... args)

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

पैरामीटर
args String

रिटर्न
सभी विकल्पों को प्रोसेस करने के बाद बचे हुए पोज़िशनल आर्ग्युमेंट का ERROR(/List).

थ्रो
ConfigurationException अगर आर्ग्युमेंट को पार्स करते समय कोई गड़बड़ी होती है.

पार्स

public  parse ( args)

parse(String) का वैकल्पिक तरीका, जिसमें ERROR(/List) आर्ग्युमेंट होते हैं

पैरामीटर
args

रिटर्न
सभी विकल्पों को प्रोसेस करने के बाद बचे हुए पोज़िशनल आर्ग्युमेंट का ERROR(/List).

थ्रो
ConfigurationException अगर आर्ग्युमेंट को पार्स करते समय कोई गड़बड़ी होती है.

parseBestEffort

public  parseBestEffort ( args)

parseBestEffort(String) का वैकल्पिक तरीका, जिसमें ERROR(/List) आर्ग्युमेंट होते हैं

पैरामीटर
args

रिटर्न
बचे हुए आर्ग्युमेंट में से ERROR(/List)

parseBestEffort

public  parseBestEffort ( args, 
                boolean forceContinue)

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

पैरामीटर
args : इस सूची में बाकी बचे आर्ग्युमेंट शामिल होंगे.

forceContinue boolean: अगर कुछ आर्ग्युमेंट पार्स नहीं होते, तब भी पार्स करना जारी रखना चाहिए, तो यह वैल्यू 'सही' पर सेट करें.

रिटर्न
बचे हुए आर्ग्युमेंट में से ERROR(/List)

parseBestEffort

public  parseBestEffort (String... args)

parse(String) का ऐसा वर्शन जिसे जल्द से जल्द उपलब्ध कराने की पूरी कोशिश की जाती है. अगर कोई ConfigurationException दिखता है, तो उस अपवाद को अंदरूनी तौर पर कैप्चर किया जाता है. साथ ही, बाकी आर्ग्युमेंट (जिस आर्ग्युमेंट की वजह से अपवाद दिखता है उसे भी शामिल करके) दिखाए जाते हैं. यह तरीका कोई गड़बड़ी नहीं दिखाता.

पैरामीटर
args String

रिटर्न
बचे हुए आर्ग्युमेंट में से ERROR(/List)

validateMandatoryOptions

public void validateMandatoryOptions ()

यह पुष्टि करता है कि ज़रूरी के तौर पर मार्क किए गए सभी फ़ील्ड सेट किए गए हैं.

थ्रो
com.android.tradefed.config.ConfigurationException
ConfigurationException