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