Groovy CliBuilder: учитывается только последний LongOpt

Я пытаюсь использовать отличный CliBuilder для анализа параметров командной строки. Я пытаюсь использовать несколько длинных параметров без короткого параметра. У меня есть следующий процессор:

    def cli = new CliBuilder(usage: 'Generate.groovy [options]')
    cli.with {
        h longOpt: "help", "Usage information"
        r longOpt: "root", args: 1, type: GString, "Root directory for code generation"
        x args: 1, type: GString, "Type of processor (all, schema, beans, docs)"
        _ longOpt: "dir-beans", args: 1, argName: "directory", type: GString, "Custom location for grails bean classes"
        _ longOpt: "dir-orm", args: 1, argName: "directory", type: GString, "Custom location for grails domain classes"
    }
    options = cli.parse(args)

    println "BEANS=${options.'dir-beans'}"
    println "ORM=${options.'dir-orm'}"

    if (options.h || options == null) {
        cli.usage()
        System.exit(0)
    }

Согласно документации groovy, я должен иметь возможность использовать несколько значений "_" для параметра, когда я хочу, чтобы он игнорировал короткое имя параметра и использовал только длинное имя параметра. Согласно документации groovy:

 Другой пример, показывающий длинные параметры (частичная эмуляция arg
обработка для командной строки 'curl'):
 def cli = new CliBuilder(usage:'curl [options] ')
 cli._(longOpt:'basic', 'Use HTTP Basic Authentication')
 cli.d(longOpt:'data', args:1, argName:'data', 'HTTP POST data')
 cli.G(longOpt:'get', 'Send the -d data with a HTTP GET')
 cli.q('If used as the first parameter disables .curlrc')
 cli._(longOpt:'url', args:1, argName:'URL', 'Set URL to work with')

 Which has the following usage message:

 usage: curl [options] 
     --basic         Use HTTP Basic Authentication
  -d,--data    HTTP POST data
  -G,--get           Send the -d data with a HTTP GET
  -q                 If used as the first parameter disables .curlrc
     --url      Set URL to work with
 В этом примере показано общее соглашение. При смешивании коротких и длинных

имена, короткие имена часто бывают одним символ по размеру. Один персонаж параметры с аргументами не требуют пространство между опцией и аргумент, например -Ddebug = true. В пример также показывает использование '_', когда короткая опция не применима.

Также обратите внимание, что '_' использовался несколько раз. Это поддерживается, но если любой другой shortOpt или любой longOpt повторяется, то поведение не определено.

http://groovy.codehaus.org/gapi/groovy/util/CliBuilder.html

Когда я использую "_", это только принимает последний в списке (последний встреченный). Я что-то делаю не так или есть способ обойти эту проблему?

Спасибо.

6
задан Saulo Silva 9 January 2015 в 15:13
поделиться