ArgsOptionParser

public class ArgsOptionParser
extends OptionSetter

對象
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.
 

一個簡單的短選項是一個“-”後跟一個短選項字符。如果選項需要一個參數(對於任何非布爾選項都是如此),則可以將其寫為單獨的參數,但不必如此。也就是說,“-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為對象的集合。

ArgsOptionParser (Object... optionSources)

創建一個ArgsOptionParser為一個或多個對象。

公共方法

getInopOptions ()

返回未更改任何默認值的選項集。

static String getOptionHelp (boolean importantOnly, Object optionObject)

輸出幫助文本的所有Option中的字段選項對象.

parse (String... args)

解析命令行參數 'args',設置提供給構造函數的 'optionSource' 的 @Option 字段。

parse ( args) parse ( args)

備用parse(String) ,需要一個方法ERROR(/List)的參數

parseBestEffort ( args) parseBestEffort ( args)

備用parseBestEffort(String) ,需要一個方法ERROR(/List)的參數

parseBestEffort ( args, boolean forceContinue) parseBestEffort ( args, boolean forceContinue)

備用parseBestEffort(String)方法,它接受ERROR(/List)的參數,並可以被迫繼續分析到最後,即使有些ARGS不解析。

parseBestEffort (String... args)

的盡力而為版parse(String)

void validateMandatoryOptions ()

驗證所有標記為必填的字段都已設置。

公共構造函數

ArgsOptionParser

public ArgsOptionParser ( optionSources)

創建一個ArgsOptionParser為對象的集合。

參數
optionSources : 配置對象。

投擲
ConfigurationException如果配置對象配置不當。

ArgsOptionParser

public ArgsOptionParser (Object... optionSources)

創建一個ArgsOptionParser為一個或多個對象。

參數
optionSources Object :在配置對象。

投擲
ConfigurationException如果配置對象配置不當。

公共方法

獲取輸入選項

public  getInopOptions ()

返回未更改任何默認值的選項集。

退貨

獲取選項幫助

public static String getOptionHelp (boolean importantOnly, 
                Object optionObject)

輸出幫助文本的所有Option中的字段選項對象.

每個選項的幫助文本將在以下格式

   [-option_shortname, --option_name]          [option_description] Default:
   [current option field's value in optionObject]
 
在'缺省...“文本將如果選項字段為空或空省略。

參數
importantOnly boolean :如果true只打印幫助的重要選項

optionObject Object :對象打印幫助文本

退貨
String包含所有選項字段的用戶友好幫助文本的字符串

解析

public  parse (String... args)

解析命令行參數 'args',設置提供給構造函數的 'optionSource' 的 @Option 字段。

參數
args String

退貨
一個ERROR(/List)的位置參數處理所有的選項後遺留下來的。

投擲
ConfigurationException如果解析參數時發生錯誤。

解析

public  parse ( args)

備用parse(String) ,需要一個方法ERROR(/List)的參數

參數
args

退貨
一個ERROR(/List)的位置參數處理所有的選項後遺留下來的。

投擲
ConfigurationException如果解析參數時發生錯誤。

解析盡力而為

public  parseBestEffort ( args)

備用parseBestEffort(String) ,需要一個方法ERROR(/List)的參數

參數
args

退貨
一個ERROR(/List)的遺留參數

解析盡力而為

public  parseBestEffort ( args, 
                boolean forceContinue)

備用parseBestEffort(String)方法,它接受ERROR(/List)的參數,並可以被迫繼續分析到最後,即使有些ARGS不解析。

參數
args : 將包含剩餘參數的列表。

forceContinue boolean :真是否繼續解析即使一些ARGS不解析。

退貨
一個ERROR(/List)的遺留參數

解析盡力而為

public  parseBestEffort (String... args)

的盡力而為版parse(String) 。如果拋出 ConfigurationException,則在內部捕獲該異常,並返回剩餘的參數(包括導致拋出異常的參數)。這個方法不拋出。

參數
args String

退貨
一個ERROR(/List)的遺留參數

驗證強制選項

public void validateMandatoryOptions ()

驗證所有標記為必填的字段都已設置。

投擲
ConfigurationException