ArgsOptionParser

public class ArgsOptionParser
extends OptionSetter

JavaScript.lang.Object
com.android.tradefed.config.OptionSetter
  com.android.tradefed.config.ArgsOptionParser


מאכלסת Option שדות מארגומנטים בשורת הפקודה המנותחת.

המחרוזות במחרוזת שמועברת [] מנותחות משמאל לימין. כל מחרוזת מסווגת בתור מחרוזת Shorts אפשרות (כמו '-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' מקבל באופן אוטומטי את האות '--ללא שם' במצב Companion. נתתי אפשרות '--flag', לאחר מכן, '--flag', '--no-flag', "--flag=true" וגם ' --flag=false' אבל כולן תקינות לא "--דגל true" או '--דגל לא נכון' ומאחר ש-'--flag' כשלעצמו מספיק, מעקב אחר הערך "true" או 'false' מפורשות בנפרד). אפשר להשתמש באפשרות 'כן' וגם 'לא' בתור מילים נרדפות ל-"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)
  • "optparse" ב-Python מודול (http://docs.python.org/library/optparse.html)
  • הנחיות התחביר של POSIX 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( optionSources)

יוצרת ArgsOptionParser לאוסף של אובייקטים.

ArgsOptionParser(Object... optionSources)

יוצרת ArgsOptionParser לאובייקט אחד או יותר.

שיטות ציבוריות

getInopOptions()

מחזירה את קבוצת האפשרויות שלא שינו ערכי ברירת מחדל כלשהם.

static String getOptionHelp(boolean importantOnly, Object optionObject)

טקסט עזרה ליצירת פלט עבור כל השדות Option ב-optionObject.

parse(String... args)

ניתוח הארגומנטים 'args' בשורת הפקודה, תוך הגדרת השדות @Option של 'optionSource' שסופקו ל-constructor.

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 : האובייקטים config.

קליעות
ConfigurationException אם אובייקטי config לא הוגדרו כראוי.

ArgsOptionParser

public ArgsOptionParser (Object... optionSources)

יוצרת ArgsOptionParser לאובייקט אחד או יותר.

פרמטרים
optionSources Object: האובייקטים config.

קליעות
ConfigurationException אם אובייקטי config לא הוגדרו כראוי.

שיטות ציבוריות

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 מחרוזת שמכילה טקסט עזרה ידידותי למשתמש בכל שדות ה-Option

לנתח

public  parse (String... args)

ניתוח הארגומנטים 'args' בשורת הפקודה, תוך הגדרת השדות @Option של 'optionSource' שסופקו ל-constructor.

פרמטרים
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: True אם צריך להמשיך לנתח גם אם חלק מהארגומנטים לא מנות.

החזרות
ERROR(/List) מהארגומנטים השמאליים

parseBestEffort

public  parseBestEffort (String... args)

גרסה של parse(String) עם התוצאות הכי טובות. אם חריגת תצורה היא רק החריגה הזאת תועדה באופן פנימי, ואת שאר הארגומנטים (כולל שגרם להקפצת החריגה). השיטה הזו לא גורם לבעיות.

פרמטרים
args String

החזרות
ERROR(/List) מהארגומנטים השמאליים

ValidMandatoryOptions

public void validateMandatoryOptions ()

מאשר שכל השדות שסומנו כשדות חובה הוגדרו.

קליעות
com.android.tradefed.config.Configuration וכל החריגות
ConfigurationException