参数选项解析器
public class ArgsOptionParser
extends OptionSetter
java.lang.Object | ||
↳ | com.android.tradefed.config.OptionSetter | |
↳ | com.android.tradefed.config.ArgsOptionParser |
从解析的命令行参数填充Option
字段。
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 (Object... optionSources) 为一个或多个对象创建一个 |
公共方法 | |
---|---|
getInopOptions () 返回未更改任何默认值的选项集。 | |
static String | getOptionHelp (boolean importantOnly, Object optionObject) 输出所有 |
parse (String... args) 解析命令行参数“args”,设置提供给构造函数的“optionSource”的@Option 字段。 | |
parse ( args) parse ( args) 接受 | |
parseBestEffort ( args) parseBestEffort ( args) 替代的 | |
parseBestEffort ( args, boolean forceContinue) parseBestEffort ( args, boolean forceContinue) 替代的 | |
parseBestEffort (String... args) | |
void | validateMandatoryOptions () 验证是否已设置所有标记为必填的字段。 |
公共构造函数
参数选项解析器
public ArgsOptionParser (optionSources)
为对象集合创建ArgsOptionParser
。
参数 | |
---|---|
optionSources |
投掷 | |
---|---|
ConfigurationException | 如果配置对象配置不正确。 |
参数选项解析器
public ArgsOptionParser (Object... optionSources)
为一个或多个对象创建一个ArgsOptionParser
。
参数 | |
---|---|
optionSources | Object :配置对象。 |
投掷 | |
---|---|
ConfigurationException | 如果配置对象配置不正确。 |
公共方法
getInop选项
publicgetInopOptions ()
返回未更改任何默认值的选项集。
退货 | |
---|---|
获取选项帮助
public static String getOptionHelp (boolean importantOnly, Object optionObject)
输出所有Option
字段的帮助文本选项对象.
[-option_shortname, --option_name] [option_description] Default: [current option field's value in optionObject]如果选项字段为 null 或为空,则“默认...”文本将被省略。
参数 | |
---|---|
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 | 如果解析参数时发生错误。 |
解析BestEffort
publicparseBestEffort ( args)
替代的parseBestEffort(String)
方法接受一个ERROR(/List)
参数
参数 | |
---|---|
args |
退货 | |
---|---|
剩余参数的ERROR(/List) |
解析BestEffort
publicparseBestEffort ( args, boolean forceContinue)
替代的parseBestEffort(String)
方法采用ERROR(/List)
参数,并且可以强制继续解析直到结束,即使某些参数不解析也是如此。
参数 | |
---|---|
args | |
forceContinue | boolean : True 如果它应该继续解析,即使一些参数不解析。 |
退货 | |
---|---|
剩余参数的ERROR(/List) |
解析BestEffort
publicparseBestEffort (String... args)
parse(String)
的尽力而为版本。如果抛出 ConfigurationException,则在内部捕获该异常,并返回其余参数(包括导致抛出异常的参数)。这个方法不会抛出。
参数 | |
---|---|
args | String |
退货 | |
---|---|
剩余参数的ERROR(/List) |
验证强制选项
public void validateMandatoryOptions ()
验证是否已设置所有标记为必填的字段。
投掷 | |
---|---|
| com.android.tradefed.config.ConfigurationException |
ConfigurationException |