參數選項解析器
public class ArgsOptionParser
extends OptionSetter
java.lang.Object | ||
↳ | com.android.tradefed.config.OptionSetter | |
↳ | com.android.tradefed.config.ArgsOptionParser |
從解析的命令行參數填充Option
字段。
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" 是單獨解釋的)。您可以使用“是”和“否”作為“真”和“假”的同義詞。每個不以“-”開頭且不是前一個選項的必需參數的字符串都是非選項位置參數,所有連續的字符串也是如此。 “--”之後的每個字符串都是非選項位置參數。與選項對應的字段在處理選項時更新。任何剩餘的位置參數都作為 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) 手冊頁
- Python 的“optparse”模塊 (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”,設置提供給構造函數的“optionSource”的@Option 字段。 | |
parse ( args) parse ( args) 接受 | |
parseBestEffort ( args) parseBestEffort ( args) 替代的 | |
parseBestEffort ( args, boolean forceContinue) parseBestEffort ( args, boolean forceContinue) 備用 | |
parseBestEffort (String... args) | |
void | validateMandatoryOptions () 驗證是否已設置所有標記為必填的字段。 |
公共構造函數
參數選項解析器
public ArgsOptionParser (optionSources)
為對象集合創建ArgsOptionParser
。
參數 | |
---|---|
optionSources |
投擲 | |
---|---|
ConfigurationException | 如果配置對象配置不正確。 |
參數選項解析器
public ArgsOptionParser (Object... optionSources)
為一個或多個對象創建一個ArgsOptionParser
。
參數 | |
---|---|
optionSources | Object :配置對象。 |
投擲 | |
---|---|
ConfigurationException | 如果配置對象配置不正確。 |
公共方法
getInop選項
publicgetInopOptions ()
返回未更改任何默認值的選項集。
退貨 | |
---|---|
獲取選項幫助
public static String getOptionHelp (boolean importantOnly, Object optionObject)
輸出所有Option
字段的幫助文本選項對象.
[-option_shortname, --option_name] [option_description] Default: [current option field's value in optionObject]如果選項字段為 null 或為空,則“默認...”文本將被省略。
參數 | |
---|---|
importantOnly | boolean :如果為true 則只打印重要選項的幫助 |
optionObject | Object :打印幫助文本的對象 |
退貨 | |
---|---|
String | 包含所有選項字段的用戶友好幫助文本的字符串 |
解析
publicparse (String... args)
解析命令行參數“args”,設置提供給構造函數的“optionSource”的@Option 字段。
參數 | |
---|---|
args | String |
退貨 | |
---|---|
處理所有選項後遺留下來的位置參數的ERROR(/List) 。 |
投擲 | |
---|---|
ConfigurationException | 如果解析參數時發生錯誤。 |
解析
publicparse ( args)
接受ERROR(/List)
參數的替代parse(String)
方法
參數 | |
---|---|
args |
退貨 | |
---|---|
處理所有選項後遺留下來的位置參數的ERROR(/List) 。 |
投擲 | |
---|---|
ConfigurationException | 如果解析參數時發生錯誤。 |
解析BestEffort
publicparseBestEffort ( args)
替代的parseBestEffort(String)
方法接受一個ERROR(/List)
參數
參數 | |
---|---|
args |
退貨 | |
---|---|
剩餘參數的ERROR(/List) |
解析BestEffort
publicparseBestEffort ( args, boolean forceContinue)
備用parseBestEffort(String)
方法採用ERROR(/List)
參數,並且可以強制繼續解析直到結束,即使某些參數不解析也是如此。
參數 | |
---|---|
args | |
forceContinue | boolean : True 如果它應該繼續解析,即使一些參數不解析。 |
退貨 | |
---|---|
剩餘參數的ERROR(/List) |
解析BestEffort
publicparseBestEffort (String... args)
parse(String)
的盡力而為版本。如果拋出 ConfigurationException,則在內部捕獲該異常,並返回其餘參數(包括導致拋出異常的參數)。這個方法不會拋出。
參數 | |
---|---|
args | String |
退貨 | |
---|---|
剩餘參數的ERROR(/List) |
驗證強制選項
public void validateMandatoryOptions ()
驗證是否已設置所有標記為必填的字段。
投擲 | |
---|---|
| com.android.tradefed.config.ConfigurationException |
ConfigurationException |