ArgsOptionParser
public
class
ArgsOptionParser
extends OptionSetter
JavaScript.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' מקבלת באופן אוטומטי רכיב נלווה '--ללא שם'. אם נותנים את האפשרות '--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 (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 |
אם אובייקטים של הגדרות אישיות מוגדרים בצורה שגויה. |
ArgsOptionParser
public ArgsOptionParser (Object... optionSources)
יצירת ArgsOptionParser
לאובייקט אחד או יותר.
פרמטרים | |
---|---|
optionSources |
Object : האובייקטים config. |
זריקות | |
---|---|
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]אם שדה האפשרות הוא ריק או null, לא יופיע הטקסט 'Default...'.
פרמטרים | |
---|---|
importantOnly |
boolean : אם true מודפסת רק עזרה לגבי האפשרויות החשובות |
optionObject |
Object : האובייקט שעבורו רוצים להדפיס את טקסט העזרה |
החזרות | |
---|---|
String |
מחרוזת שמכילה טקסט עזרה ידידותי למשתמש לכל שדות האפשרויות |
לנתח
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)
שמבוססת על הניסיון שלנו. אם מתרחשת הטלת ConfigurationException, החריגה מתועדת באופן פנימי והארגומנטים הנותרים (כולל הארגומנט שגרם להטלת החריגה) מוחזרים. השיטה הזו לא גורם לבעיות.
פרמטרים | |
---|---|
args |
String |
החזרות | |
---|---|
|
ERROR(/List) מהארגומנטים השמאליים |
validateMandatoryOptions
public void validateMandatoryOptions ()
מאשר שכל השדות שסומנו כשדות חובה הוגדרו.
זריקות | |
---|---|
|
com.android.tradefed.config.ConfigurationException |
ConfigurationException |