나는 Groovy CliBuilder를 배우고 있으며, 틀린 주장을 어떻게 인식해야 할지를 모르겠다. 내가 잘못된 옵션 아무런 변화가없는 한, 예를 들어, 함께 -p
을 내 스크립트를 호출하는 경우Groovy CliBuilder, 잘못된 인수를 인식하는 방법?
def cli = new CliBuilder()
cli.s args: 1, longOpt: 'sdkdir', 'sdkdir usage info'
cli.h args: 0, longOpt: 'help', 'print usage information'
def opt = cli.parse(args)
if (!opt) {
//how to be in this case? seems I can never reach here
println "something went wrong, but I don't know what"
} else if (opt.h) {
cli.usage()
} else (!opt.s) {
println "missing required option -s, try with --help for more information"
} else {
//do something
}
다음 예제 코드를 생각해 보자. 마찬가지로, 옵션 뒤에 인수를 추가해도 감지되지 않습니다.
어떻게 오류를 감지하고 알릴 수 있습니까?
또한, 작은 불편은 이론적으로, 내가 required: true
를 추가 할 수 있도록 내 예에 -s
는 필수 매개 변수가 나는하거나 -h
으로도 필요한 것입니다 수 없습니다 실제로이라고,하지만 난 그것을 테스트하는 생각 if
은 더 좋은 방법이없는 한 괜찮습니다.
내 진짜 문제는 원치 않는 옵션과 인수를 찾는 것입니다. 어떤 도움을 주셔서 감사합니다. 감사합니다.
업데이트 : 감사합니다 @rodion 귀하의 의견을 위해, 나는 충분히 단순 대신에 충분할 것 같아요. 여기에 내가 무엇을 최대 온 것입니다 :
#!/usr/bin/groovy
def cli = new CliBuilder(usage: 'cliTest -s sdkdir {projectName}',
header: 'Command line parameter parsing test in Groovy')
cli.s longOpt: 'sdkdir', args: 1, 'sdkdir usage info, REQUIRED'
cli.h longOpt: 'help', 'print usage information'
def opt = cli.parse(args)
def errMsg = "Invalid arguments.\nusage: ${cli.usage}\n" +
"Try `cliTest --help' for more information."
if (!opt) {
//should never happen, since I don't have required parameters in CliBuilder
println "error processing arguments\n"
} else if (opt.h) {
cli.usage()
} else if (!opt.s) {
println errMsg
} else if (opt.arguments().size() != 1) {
println errMsg
} else {
println "Creating project ${opt.arguments()[0]}, sdkdir ${opt.s.value}"
}
이 솔루션은 충분하지만, 그것이 잘못 인 매개 변수를 알려하지 않기 때문에 완벽하지,하지만 단지 간결한 메시지 또는 인쇄 사용 정보를 알려줍니다. 다음은 몇 가지 테스트입니다.
제 목적으로는 만족 스럽지만 더 좋은 방법을 아는 사람이 있으면 알려주세요.
또한 required: true
옵션이 있고 인수가 누락되었을 때 !opt
대소 문자가 있음을 알았지 만, 필자의 이해로는 결코 사용할 수 없기 때문에 도움말 옵션 만 사용할 수 없기 때문에이 문자를 사용할 수 없습니다.
확인, 감사를 만나면
는 다음, CliBuilder 즉시 오류 메시지와 함께 종료됩니다, 그것은 할 수 있습니다. 기자가 말했듯이, 그것은 문서에 언급되어야하지만, 나는 그것도 보지 못했습니다. 'required : true' 옵션이 있고 인수가 빠졌을 때'! opt' 케이스가 발생할 수 있습니다. 그러나 CliBuilder에게 필수 인수를 관리하도록 요청하지 않습니다. 그 이후로'-h'와 같은 독립형 옵션을 사용할 수 없습니다. 도움이 필요하거나 버전에'-v'가 필요합니다. – stivlo