如何从CliBuilder获取非选项参数?

时间:2015-02-12 20:46:10

标签: groovy

我有一个最简单的groovy脚本试图弄清楚CliBuilder。如何使CliBuilder为我提供超出选项的命令行参数?我的期望是命令行调用,如......

./hello.groovy -u robert Edward

...会产生类似......

的输出
ROBERT EDWARD

来自我的消息来源......

#!/usr/bin/env groovy
cli = new CliBuilder(usage:'hello.groovy [-hu] [name ...]')
cli.with {
  h longOpt: 'help', 'Show usage information'
  u longOpt: 'upper', 'uppercase eachg name'
}
options = cli.parse(args)
if(!options) {
  throw new IllegalStateException("WTF?!?")
}
if(options.h || options.arguments().isEmpty()) {
  cli.usage()
  return
}
println("$options.arguments()");

..但我无法弄清楚如何得到其余的论点,超出选项的那些。

1 个答案:

答案 0 :(得分:3)

如果-2只是一个标志,则不需要-u

#!/usr/bin/env groovy

cli = new CliBuilder(usage:'hello.groovy [-hu] [name ...]')
cli.with {
  h longOpt: 'help', 'Show usage information'
  u longOpt: 'upper', 'uppercase eachg name'
}
options = cli.parse(args)
if(!options) {
  throw new IllegalStateException("WTF?!?")
}
if(options.h || options.arguments().isEmpty()) {
  cli.usage()
  return
}

if(options.u) {
    options.arguments().each { println it.toUpperCase() }
}
else {
    options.arguments().each { println it }
}