[
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)