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" שאחריו מפורש בנפרד). אפשר להשתמש במילים yes ו-no כמילים נרדפות למילים 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 (http://www.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap12.html#tag_12_02)
- GNU Standards for Command Line Interfaces (סטנדרטים של GNU לממשקי שורת פקודה) (http://www.gnu.org/prep/standards/standards.html#Command_002dLine-Interfaces)
מידע נוסף:
סיכום
constructors ציבוריים | |
|---|---|
ArgsOptionParser(Object... optionSources)
יוצרת |
|
ArgsOptionParser(Collection<Object> optionSources)
יוצרת |
|
methods ציבוריים | |
|---|---|
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()
הפונקציה בודקת שכל השדות שמסומנים כשדות חובה הוגדרו. |
constructors ציבוריים
ArgsOptionParser
public ArgsOptionParser (Object... optionSources)
יוצרת ArgsOptionParser לאובייקט אחד או יותר.
| פרמטרים | |
|---|---|
optionSources |
Object: אובייקטים של הגדרות אישיות. |
| הקפצת הודעות שגיאה (throw) | |
|---|---|
ConfigurationException |
אם אובייקטים של הגדרות אישיות מוגדרים בצורה שגויה. |
ArgsOptionParser
public ArgsOptionParser (Collection<Object> optionSources)
יוצרת ArgsOptionParser לאוסף של אובייקטים.
| פרמטרים | |
|---|---|
optionSources |
Collection: אובייקטים של הגדרות אישיות. |
| הקפצת הודעות שגיאה (throw) | |
|---|---|
ConfigurationException |
אם אובייקטים של הגדרות אישיות מוגדרים בצורה שגויה. |
methods ציבוריים
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 |
מחרוזת שמכילה טקסט עזרה ידידותי למשתמש לכל שדות האפשרויות |
parse
public List<String> parse (List<String> args)
שיטה חלופית ERROR(/#parse(String. args)) שמקבלת List של ארגומנטים
| פרמטרים | |
|---|---|
args |
List |
| החזרות | |
|---|---|
List<String> |
List של הארגומנטים תלויי המיקום שנשארו אחרי עיבוד כל האפשרויות. |
| הקפצת הודעות שגיאה (throw) | |
|---|---|
ConfigurationException |
אם קרתה שגיאה בניתוח הארגומנטים. |
parse
public List<String> parse (String... args)
מנתח את הארגומנטים בשורת הפקודה 'args', ומגדיר את השדות @Option של 'optionSource' שסופקו לבונה.
| פרמטרים | |
|---|---|
args |
String |
| החזרות | |
|---|---|
List<String> |
List של הארגומנטים תלויי המיקום שנשארו אחרי עיבוד כל האפשרויות. |
| הקפצת הודעות שגיאה (throw) | |
|---|---|
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: הערך True אם צריך להמשיך בניתוח גם אם חלק מהארגומנטים לא מנותחים. |
| החזרות | |
|---|---|
List<String> |
List של הארגומנטים שנותרו |
parseBestEffort
public List<String> parseBestEffort (String... args)
גרסה של ERROR(/#parse(String. args)) שנוצרה בהקדם האפשרי. אם מתבצעת השלכה של ConfigurationException, החריגה הזו נלכדת באופן פנימי, ומוחזרים הארגומנטים שנותרו (כולל הארגומנט שגרם להשלכת החריגה). השיטה הזו לא יוצרת חריגה.
| פרמטרים | |
|---|---|
args |
String |
| החזרות | |
|---|---|
List<String> |
List של הארגומנטים שנותרו |
validateMandatoryOptions
public void validateMandatoryOptions ()
הפונקציה בודקת שכל השדות שמסומנים כשדות חובה הוגדרו.
| הקפצת הודעות שגיאה (throw) | |
|---|---|
|
com.android.tradefed.config.ConfigurationException |
ConfigurationException |
|