[ 
https://issues.apache.org/jira/browse/CLI-221?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17824872#comment-17824872
 ] 

Gary D. Gregory edited comment on CLI-221 at 3/8/24 9:54 PM:
-------------------------------------------------------------

HI [~claude] 

The bug reports sounds valid when I look at the example in the ticket 
description.

The response from [~tn] might be "correct" in the sense that it describes the 
state of the code at that time, but it sure is counter intuitive and violates 
for _me_ the principle of least surprise: I tell CLI the separator is "," but 
CLI behaves like it is both "," and spaces, which is not what I told it.

Regarding dash-dash, I think we should consider git as an example as see how 
our current implementation and your proposal handle dash-dash, for example:
|git checkout (-p|--patch) [<tree-ish>] [--] [<pathspec>…​]|

from [https://git-scm.com/docs/git-checkout]


was (Author: garydgregory):
HI [~claude] 

The bug reports sounds valid when I look at the example in the ticket 
description.

The response from [~tn] might be "correct" in the sense that it describes the 
state of the code at that time, but it sure is counter intuitive and violates 
for _me_ the principle of least surprise: I tell CLI the separator is "," but 
CLI behaves like it is both "," and spaces, which is not what I told it.

Regarding dash-dash, I think we should consider git as an example as see how 
our current implementation, for example:

| git checkout (-p|--patch) [<tree-ish>] [--] [<pathspec>…​]

from https://git-scm.com/docs/git-checkout


> cli's with last option as list type values and have argument are not parsed 
> correctly
> -------------------------------------------------------------------------------------
>
>                 Key: CLI-221
>                 URL: https://issues.apache.org/jira/browse/CLI-221
>             Project: Commons CLI
>          Issue Type: Bug
>          Components: Parser
>    Affects Versions: 1.2
>            Reporter: Gagan Jain
>            Priority: Major
>
> I have set the value separator for an option to be comma (',').
> Consider the following cli:
> cli definition : cmd1 -o1 <comma separated values> a1
> command name: 'cmd1'
> options: 'o1' accpets list of values separated by ','
> arguments: 'a1' single valued argument
> {code}cmd1 -o1 o1v1,o1v2,o1v3 a1v1{code}
> GnuParser parses this the cli with o1 having values {o1v1, o1v2, o1v3, a1v1} 
> instead of {o1v1,o1v2,o1v3}
> Bug seems to be in org.apache.commons.cli.Parser's class processArgs method.
> {code:java}
>     public void processArgs(Option opt, ListIterator iter) throws 
> ParseException
>     {
>         // loop until an option is found
>         while (iter.hasNext())
>         {
>             String str = (String) iter.next();
>             // found an Option, not an argument
>             if (getOptions().hasOption(str) && str.startsWith("-"))
>             {
>                 iter.previous();
>                 break;
>             }
>             // found a value
>             try
>             {
>                 
> opt.addValueForProcessing(Util.stripLeadingAndTrailingQuotes(str));
>             }
>             catch (RuntimeException exp)
>             {
>                 iter.previous();
>                 break;
>             }
>         }
>         if (opt.getValues() == null && !opt.hasOptionalArg())
>         {
>             throw new MissingArgumentException(opt);
>         }
>     }
> {code}
> In my opinion, if a value separator is defined for option, and is other than 
> space (' '), loop should break immediately after one iteration.
> Correct me, if I am wrong in my understanding.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to