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) الرئيسية
  • وحدة "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 ()

عرض مجموعة الخيارات التي لم تُغيّر أي قيم تلقائية

المرتجعات

الحصول على مساعدة

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) من الوسيطات المتبقية

خيارات التحقّق من صحة ما يجب

public void validateMandatoryOptions ()

يتم التحقّق من ضبط جميع الحقول التي تم وضع علامة عليها على أنّها إلزامية.

الرميات
com.android.tradefed.config.ConfigurationException
ConfigurationException