CliBuilder参数是空的

时间:2014-10-27 03:16:40

标签: groovy command-line-interface

以下是我的问题的一个有效例子:

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之外,我无法获得任何工作选择。我不确定我做错了什么。

2 个答案:

答案 0 :(得分:2)

原因是没有争论!你已经将它们吞没了所有选项。

如果你打电话

groovy cli-test.groovy -d hello foo

然后arguments()列表为[foo]

-d arg会自动检查,因为你需要它,所以以后不需要测试它。

答案 1 :(得分:0)

不确定为什么会这样,但删除:

|| options.arguments().isEmpty()

从最初的if检查使一切正常。