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" التاليَين بشكل منفصل). يمكنك استخدام "نعم" و "لا" كمرادفات لـ "صحيح" و "خطأ".

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

يتم تعديل الحقول التي تتوافق مع الخيارات أثناء معالجة الخيارات. يتم عرض أي وسيطات موضعية متبقية كـ 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) 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 "Standards for Command Line Interfaces" (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)

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

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

طريقة ERROR(/#parse(String. args)) بديلة تأخذ List من الوسيطات

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

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

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)

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

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

   [-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)

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

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