ArgsOptionParser

public class ArgsOptionParser
extends OptionSetter

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


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

מחרוזות במחרוזת המועברת[] מנותחות משמאל לימין. כל מחרוזת מסווגת כאפשרות קצרה (כגון "-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" הבאים מתפרשים בנפרד). אתה יכול להשתמש ב"כן" ו"לא" כמילים נרדפות ל"נכון" ו"לא נכון".

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

השדות המתאימים לאפשרויות מתעדכנים עם עיבוד האפשרויות שלהם. כל הארגומנטים המיקוםיים שנותרו מוחזרים בתור רשימה<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 "הנחיות תחביר עזר" (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 ( 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 ( args)

שיטת parse(String) חלופית שלוקחת ERROR(/List) של ארגומנטים

parseBestEffort ( args) parseBestEffort ( args)

שיטת parseBestEffort(String) חלופית שלוקחת ERROR(/List) של ארגומנטים

parseBestEffort ( args, boolean forceContinue) 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 : רשימה שתכיל את השאריות של 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