ArgsOptionParser

public class ArgsOptionParser
extends OptionSetter

java.lang.Object
   ↳ com.android.tradefed.config.OptionSetter
     ↳ com.android.tradefed.config.ArgsOptionParser


تعبئ حقول Option من وسيطات سطر الأوامر التي تم تحليلها.

يتمّ تحليل السلاسل في String[] التي تمّ تمريرها من اليسار إلى اليمين. يتم تصنيف كل سلسلة على أنّها خيار قصير (مثل "-v") أو خيار طويل (مثل "--verbose") أو مَعلمة خيار (مثل "out.txt" في "-f 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" التاليَين بشكل منفصل). يمكنك استخدام "نعم" و "لا" كمترادفَين للكلمةَين "صحيح" و "خطأ".

كل سلسلة لا تبدأ بـ "-" وليست وسيطة مطلوبة لخيار سابق هي وسيطة موضعية غير خيار، كما هو الحال مع جميع السلاسل المتتالية. كل سلسلة بعد "--" هي وسيطة موضعية غير خيارية.

يتم تعديل الحقول المقابلة للخيارات أثناء معالجة خياراتها. يتم عرض أي وسيطات موضعية متبقية كقائمة<سلسلة>.

في ما يلي مثال بسيط:

 // 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) man
  • وحدة "optparse" في Python‏ (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( optionSources)

تُنشئ ArgsOptionParser لمجموعة من العناصر.

ArgsOptionParser(Object... optionSources)

تُنشئ ArgsOptionParser لعنصر واحد أو أكثر.

الطرق العامة

getInopOptions()

عرض مجموعة الخيارات التي لم تؤدي إلى تغيير أي قيم تلقائية

static String getOptionHelp(boolean importantOnly, Object optionObject)

عرض نص المساعدة لجميع حقول Option في optionObject

parse(String... args)

تُحلِّل وسيطات سطر الأوامر "args"، وتضبط حقول @Option الخاصة بـ "optionSource" المقدَّمة لدالة الإنشاء.

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)

عرض نص المساعدة لجميع حقول Option في optionObject

سيكون نص المساعدة لكل خيار بالتنسيق التالي:

   [-option_shortname, --option_name]          [option_description] Default:
   [current option field's value in optionObject]
 
سيتم حذف النص "تلقائي..." إذا كان حقل الخيار فارغًا أو غير محدّد.

المعلمات
importantOnly boolean: إذا كانت true تطبع مساعدة الخيارات المهمة فقط

optionObject Object: العنصر المطلوب طباعة نص المساعدة له

المرتجعات
String سلسلة تحتوي على نص مساعدة سهل الاستخدام لجميع حقول الخيارات

تحليل

public  parse (String... args)

تُحلِّل وسيطات سطر الأوامر "args"، وتضبط حقول @Option الخاصة بـ "optionSource" المقدَّمة لدالة الإنشاء.

المعلمات
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