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 (Object... optionSources) יוצר |
שיטות ציבוריות | |
---|---|
getInopOptions () מחזירה את קבוצת האפשרויות שלא שינו ערכי ברירת מחדל. | |
static String | getOptionHelp (boolean importantOnly, Object optionObject) פלט טקסט עזרה עבור כל שדות |
parse (String... args) מנתח את הארגומנטים של שורת הפקודה 'args', מגדיר את השדות @Option של 'optionSource' שסופק לבנאי. | |
parse ( args) parse ( args) שיטת | |
parseBestEffort ( args) parseBestEffort ( args) שיטת | |
parseBestEffort ( args, boolean forceContinue) parseBestEffort ( args, boolean forceContinue) שיטת | |
parseBestEffort (String... args) גרסה במאמץ הטוב ביותר של | |
void | validateMandatoryOptions () מאמת שכל השדות שסומנו כחובה הוגדרו. |
בנאים ציבוריים
ArgsOptionParser
public ArgsOptionParser (optionSources)
יוצר ArgsOptionParser
עבור אוסף של אובייקטים.
פרמטרים | |
---|---|
optionSources |
זורק | |
---|---|
ConfigurationException | אם אובייקטי התצורה מוגדרים בצורה לא נכונה. |
ArgsOptionParser
public ArgsOptionParser (Object... optionSources)
יוצר ArgsOptionParser
עבור אובייקט אחד או יותר.
פרמטרים | |
---|---|
optionSources | Object : אובייקטי התצורה. |
זורק | |
---|---|
ConfigurationException | אם אובייקטי התצורה מוגדרים בצורה לא נכונה. |
שיטות ציבוריות
getInopOptions
publicgetInopOptions ()
מחזירה את קבוצת האפשרויות שלא שינו ערכי ברירת מחדל.
החזרות | |
---|---|
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 | מחרוזת המכילה טקסט עזרה ידידותי למשתמש עבור כל שדות האפשרויות |
לְנַתֵחַ
publicparse (String... args)
מנתח את הארגומנטים של שורת הפקודה 'args', מגדיר את השדות @Option של 'optionSource' שסופק לבנאי.
פרמטרים | |
---|---|
args | String |
החזרות | |
---|---|
ERROR(/List) של הארגומנטים המיקוםיים שנותרו לאחר עיבוד כל האפשרויות. |
זורק | |
---|---|
ConfigurationException | אם אירעה שגיאה בניתוח הארגומנטים. |
לְנַתֵחַ
publicparse ( args)
שיטת parse(String)
חלופית שלוקחת ERROR(/List)
של ארגומנטים
פרמטרים | |
---|---|
args |
החזרות | |
---|---|
ERROR(/List) של הארגומנטים המיקוםיים שנותרו לאחר עיבוד כל האפשרויות. |
זורק | |
---|---|
ConfigurationException | אם אירעה שגיאה בניתוח הארגומנטים. |
parseBestEffort
publicparseBestEffort ( args)
שיטת parseBestEffort(String)
חלופית שלוקחת ERROR(/List)
של ארגומנטים
פרמטרים | |
---|---|
args |
החזרות | |
---|---|
ERROR(/List) של הארגומנטים שנותרו |
parseBestEffort
publicparseBestEffort ( args, boolean forceContinue)
שיטת parseBestEffort(String)
חלופית שלוקחת ERROR(/List)
של ארגומנטים, וניתן לאלץ אותה להמשיך בניתוח עד הסוף, גם אם חלק מהארגים אינם מנתחים.
פרמטרים | |
---|---|
args | |
forceContinue | boolean : נכון אם זה צריך להמשיך לנתח גם אם חלק מהארגים לא מנתחים. |
החזרות | |
---|---|
ERROR(/List) של הארגומנטים שנותרו |
parseBestEffort
publicparseBestEffort (String... args)
גרסה במאמץ הטוב ביותר של parse(String)
. אם נזרק ConfigurationException, החריג הזה נקלט באופן פנימי, ושאר הארגומנטים (כולל הארגומנט שגרם לזריקת החריג) מוחזרים. השיטה הזו לא זורקת.
פרמטרים | |
---|---|
args | String |
החזרות | |
---|---|
ERROR(/List) של הארגומנטים שנותרו |
validateMandatoryOptions
public void validateMandatoryOptions ()
מאמת שכל השדות שסומנו כחובה הוגדרו.
זורק | |
---|---|
| com.android.tradefed.config.ConfigurationException |
ConfigurationException |