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