ArgsOptionParser
public
class
ArgsOptionParser
extends OptionSetter
java.lang.Object | ||
↳ | com.android.tradefed.config.OptionSetter | |
↳ | com.android.tradefed.config.ArgsOptionParser |
從剖析的指令列引數填入 Option
欄位。
系統會從左至右剖析傳入的 String[] 中的字串。每個字串都會歸類為短選項 (例如「-v」)、長選項 (例如「--verbose」)、選項的引數 (例如「-f out.txt」中的「out.txt」),或非選項的關鍵字引數。
每個選項引數都必須對應至一或多個 Option
欄位。長選項會對應至 Option
名稱,而短選項會對應至 Option
簡稱。每個選項名稱和選項簡稱都必須與同一個物件中的所有其他 Option
欄位不同。
單一選項引數可對應至多個物件中同名的 Option
欄位。Option
引數可建立命名空間,用以參照單一物件內的 Option
欄位,並使用該物件的完整類別名稱或其 OptionClass
別名值 (以「:」分隔)。例如
--classname:optionname optionvalue or --optionclassalias:optionname optionvalue.
簡單的短選項是「-」後面接著短選項字元。如果選項需要引數 (任何非布林值選項的引數都是 true),則該引數可以寫成獨立參數,但並不需要。也就是說,「-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」會另外解讀)。您可以使用「是」和「否」做為「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(
為物件集合建立 |
|
ArgsOptionParser(Object... optionSources)
為一或多個物件建立 |
公用方法 | |
---|---|
|
getInopOptions()
傳回未變更任何預設值的選項組合。 |
static
String
|
getOptionHelp(boolean importantOnly, Object optionObject)
輸出 optionObject 中所有 |
|
parse(String... args)
剖析指令列引數「args」,設定提供給建構函式的「optionSource」的 @Option 欄位。 |
|
parse(
採用引數 |
|
parseBestEffort(
替代 |
|
parseBestEffort(
替代的 |
|
parseBestEffort(String... args)
盡可能使用 |
void
|
validateMandatoryOptions()
驗證是否已設定所有標示為必填的欄位。 |
公用建構函式
ArgsOptionParser
public ArgsOptionParser (optionSources)
為物件集合建立 ArgsOptionParser
。
參數 | |
---|---|
optionSources |
:設定物件。 |
擲回 | |
---|---|
ConfigurationException |
即可。 |
ArgsOptionParser
public ArgsOptionParser (Object... optionSources)
為一或多個物件建立 ArgsOptionParser
。
參數 | |
---|---|
optionSources |
Object :設定物件。 |
擲回 | |
---|---|
ConfigurationException |
Config 物件設定不正確。 |
公用方法
getInopOptions
publicgetInopOptions ()
傳回未變更任何預設值的選項組合。
傳回 | |
---|---|
|
getOptionHelp 說明
public static String getOptionHelp (boolean importantOnly, Object optionObject)
輸出 optionObject 中所有 Option
欄位的說明文字。
每個選項的說明文字會採用以下格式
[-option_shortname, --option_name] [option_description] Default: [current option field's value in optionObject]如果選項欄位為空值或空白,系統會省略「Default...」文字。
參數 | |
---|---|
importantOnly |
boolean :如果 true 只列印重要選項的說明 |
optionObject |
Object :要顯示說明文字的物件 |
傳回 | |
---|---|
String |
字串,其中包含所有選項欄位的友善使用者說明文字 |
parse
publicparse (String... args)
剖析指令列引數「args」,設定提供給建構函式的「optionSource」的 @Option 欄位。
參數 | |
---|---|
args |
String |
傳回 | |
---|---|
|
處理所有選項後,剩餘的位置引數的 ERROR(/List) 。 |
擲回 | |
---|---|
ConfigurationException |
在剖析引數時發生錯誤。 |
parse
publicparse ( args)
使用引數 ERROR(/List)
的替代 parse(String)
方法
參數 | |
---|---|
args |
|
傳回 | |
---|---|
|
處理所有選項後,剩餘的位置引數 ERROR(/List) 。 |
擲回 | |
---|---|
ConfigurationException |
如果剖析引數時發生錯誤。 |
parseBestEffort
publicparseBestEffort ( args)
使用引數 ERROR(/List)
的替代 parseBestEffort(String)
方法
參數 | |
---|---|
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 |