ArgsOptionParser (AgsOptionParser)
public
class
ArgsOptionParser
extends OptionSetter
java.lang.Object | ||
↳ | com.android.tradefed.config.OptionSetter | |
↳ | com.android.tradefed.config.ArgsOptionParser |
從剖析的指令列引數中填入 Option
欄位。
傳入的 String[] 中的字串是由左至右剖析。每個字串都會歸類為簡短 選項 (例如「-v」)、長選項 (例如「--verbose」) )、選項引數 (例如 「out.txt」,或是非選項的位置引數,
每個選項引數都必須對應至一或多個 Option
欄位。長選項會對應至
Option
名稱和一個簡短選項對應至 Option
簡稱。每個選項名稱和
選項簡稱必須與所有其他項目
相同物件內的 Option
欄位。
單一選項引數可對應至多個名稱相同的 Option
欄位
以便在多個物件之間運作Option
引數可做為命名空間來代表
單一物件內的 Option
欄位,會使用該物件的完整類別名稱或
OptionClass
別名值 (以「:」分隔)。ie
--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 (AgsOptionParser)
public ArgsOptionParser (optionSources)
針對物件集合建立 ArgsOptionParser
。
參數 | |
---|---|
optionSources |
:config 物件。 |
擲回 | |
---|---|
ConfigurationException |
即可。 |
ArgsOptionParser (AgsOptionParser)
public ArgsOptionParser (Object... optionSources)
為一或多個物件建立 ArgsOptionParser
。
參數 | |
---|---|
optionSources |
Object :config 物件。 |
擲回 | |
---|---|
ConfigurationException |
即可。 |
公用方法
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]
參數 | |
---|---|
importantOnly |
boolean :如果 true 僅列印重要選項的說明 |
optionObject |
Object :要顯示說明文字的物件 |
傳回 | |
---|---|
String |
包含使用者容易理解的說明文字的字串,適用於所有選項欄位 |
剖析
publicparse (String... args)
剖析指令列引數「args」,設定「optionSource」的 @Option 欄位 提供給建構函式。
參數 | |
---|---|
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) |
VerifyMandatoryOptions
public void validateMandatoryOptions ()
確認所有標示為必填的欄位皆已設定。
擲回 | |
---|---|
|
com.android.tradefed.config.ConfigurationException |
ConfigurationException |