Google 致力于为黑人社区推动种族平等。查看具体举措

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