ArgsOptionParser
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”进行单独解释)。您可以使用“是”和“no”视为同义词 搜索“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 |
如果配置对象配置不正确,则会发生该错误。 |
公共方法
getInopOptions
publicgetInopOptions ()
返回未更改任何默认值的选项集。
返回 | |
---|---|
|
getOption 帮助
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)
接受 ERROR(/List)
参数的备用 parse(String)
方法
参数 | |
---|---|
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 |