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(Collection<Object> optionSources)
تنشئ هذه الدالة |
|
الإجراءات العامة | |
|---|---|
Set<String>
|
getInopOptions()
تعرِض هذه السمة مجموعة الخيارات التي لم تغيّر أي قيم تلقائية. |
static
String
|
getOptionHelp(boolean importantOnly, Object optionObject)
عرض نص المساعدة لجميع الحقول |
List<String>
|
parse(List<String> args)
طريقة |
List<String>
|
parse(String... args)
تحلّل وسيطات سطر الأوامر "args"، وتضبط حقول @Option الخاصة بـ "optionSource" التي تم توفيرها للدالة الإنشائية. |
List<String>
|
parseBestEffort(List<String> args)
طريقة |
List<String>
|
parseBestEffort(List<String> args, boolean forceContinue)
طريقة |
List<String>
|
parseBestEffort(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 |
|