以下是我的问题的一个有效例子:
def cli = new CliBuilder(usage: 'cli-test -d <argument>')
cli.with {
h(longOpt: 'help', 'usage information')
d(longOpt: 'do-something', required: true, args: 1, 'Do Something' )
}
OptionAccessor options = cli.parse(args)
if(!options) {
return
}
// print usage if -h, --help, or no argument is given
if(options.h || options.arguments().isEmpty()) {
println options.arguments().size()
cli.usage()
return
} else if (options.d) {
println options.d
}
当我使用以下内容执行脚本时:
groovy cli-test.groovy -d hello
我得到了这个输出:
0
usage: cli-test -d <argument>
-d,--do-something <arg> Do Something
-h,--help usage information
0
是我的println是参数长度。除了h
之外,我无法获得任何工作选择。我不确定我做错了什么。
答案 0 :(得分:2)
原因是没有争论!你已经将它们吞没了所有选项。
如果你打电话
groovy cli-test.groovy -d hello foo
然后arguments()列表为[foo]
-d arg会自动检查,因为你需要它,所以以后不需要测试它。
答案 1 :(得分:0)
不确定为什么会这样,但删除:
|| options.arguments().isEmpty()
从最初的if检查使一切正常。