[ 
https://issues.apache.org/jira/browse/GROOVY-9528?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Paul King closed GROOVY-9528.
-----------------------------

> CLIBuilder: "error: Missing required options" when unknown options are 
> provided
> -------------------------------------------------------------------------------
>
>                 Key: GROOVY-9528
>                 URL: https://issues.apache.org/jira/browse/GROOVY-9528
>             Project: Groovy
>          Issue Type: Bug
>          Components: command line processing
>    Affects Versions: 3.0.2
>         Environment: Linux/Windows
>            Reporter: Dirk Heinrichs
>            Assignee: Remko Popma
>            Priority: Major
>             Fix For: 3.0.4, 2.5.12
>
>
> When passing an additional option to a script that doesn't know about this 
> option, I get an error message about "missing required options", listing all 
> required options that follow the unkown option.
> The following example code reproduces the issue:
> {code:java}
> @Grab('info.picocli:picocli-groovy:4.2.0')
> @GrabConfig(systemClassLoader=true)
> import groovy.cli.picocli.CliBuilder
> def cli = new CliBuilder(name: 'cliTest.groovy')
> cli.h(type: Boolean, longOpt: 'help', usageHelp: true, required: false, 'Show 
> usage information')
> cli.a(type: String, longOpt: 'optA', required: true, args: 1, 'Option a 
> (required)')
> cli.b(type: String, longOpt: 'optB', required: true, args: 1, 'Option b 
> (required)')
> // NOTE: No "-c|--optC" here
> cli.d(type: String, longOpt: 'optD', required: true, args: 1, 'Option d 
> (required)')
> cli.e(type: String, longOpt: 'optE', required: true, args: 1, 'Option e 
> (required)')
> cli.f(type: String, longOpt: 'optF', required: false, args: 1, 'Option f 
> (optional)')
> def opts = cli.parse(args)
> opts || System.exit(1)
> if(opts.h) {
>   cli.usage()
>   System.exit(0)
> }{code}
> When invoked with an additional option, '-c C' for example, it produces the 
> following, misleading output:
> {code:java}
> % ~/tmp/groovy-3.0.2/bin/groovy ./cliTest.groovy -a A -b B -c C -d D -e E
> error: Missing required options [--optD=PARAM, --optE=PARAM]
> Usage: cliTest.groovy [-h] -a=PARAM -b=PARAM -d=PARAM -e=PARAM [-f=PARAM]
>   -a, --optA=PARAM   Option a (required)
>   -b, --optB=PARAM   Option b (required)
>   -d, --optD=PARAM   Option d (required)
>   -e, --optE=PARAM   Option e (required)
>   -f, --optF=PARAM   Option f (optional)
>   -h, --help         Show usage information{code}
> The list of missing options varies depending on where "-c C" is inserted. 
> There's no error when it's the last one.
> I would expect it to either ignore the addtional option in all cases or emit 
> an error message about an unknown option. But in no case should it error out 
> because of missing required options when there are none missing.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to