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

Brian Egge updated CLI-145:
---------------------------

    Attachment: CLI145.patch

It seems the argumentCount option in ArgumentImpl was trying to do more than 
one thing, or do something clever.  It was getting set to the number of default 
options, which David's example was 2.  Once it parsed two additional options, 
it would reach 4, and throw an exception.  Simply setting the count to zero 
seems to fix the problem.  

This caused 'BugLoopingOptionLookAlikeTest' to throw an Argument Unexpected 
Value instead of Unexpected Token message.  I'm not sure which is more correct.

I changed option so it can assert on message tokens and not the message strings 
from the resource bundle.   

> ArgumentBuilder.withMaximum causes parse errors: Unexpeced <value> while 
> processing options
> -------------------------------------------------------------------------------------------
>
>                 Key: CLI-145
>                 URL: https://issues.apache.org/jira/browse/CLI-145
>             Project: Commons CLI
>          Issue Type: Bug
>          Components: CLI-2.x
>    Affects Versions: 2.0
>         Environment: Windows XP
>            Reporter: David Biesack
>         Attachments: CLI145.patch
>
>
> With the sample program below, running with the arguments
>   -a 0 -b 1 2 3 4
> causes the error:
> Unexpected 3 while processing options                                         
>   
> Usage:                                                                        
>   
>  [-a <a1> [<a2> ...] -b <b1> <b2> [<b3> [<b4>]]]                              
>   
> options                                                                       
>   
>   -a (--a) a [a ...]                                                          
>   
>   -b (--b) b b [b [b]]                                                        
>   
> I specified .withMinimum(2).withMaximum(4) 
> The help is correct, but the value '3' is not added as a value.
> Note also that if for bOption, if you add two more defaults (uncomment them 
> in the source)
>             .withDefault("10000")
>             .withDefault("1000000")
> an error is raised (incorrectly) on the first b value (i.e. 1 instead of 3) :
> Unexpected 1 while processing options         
> Usage:                                                                        
>   
>  [-a <a1> [<a2> ...] -b <b1> <b2> [<b3> [<b4>]]]                              
>   
> options                                                                       
>   
>   -a (--a) a [a ...]                                                          
>   
>   -b (--b) b b [b [b]]
> Source:
> package org.apache.commons.cli2.issues;
> import java.util.List;
> import org.apache.commons.cli2.CommandLine;
> import org.apache.commons.cli2.Group;
> import org.apache.commons.cli2.builder.ArgumentBuilder;
> import org.apache.commons.cli2.builder.DefaultOptionBuilder;
> import org.apache.commons.cli2.builder.GroupBuilder;
> import org.apache.commons.cli2.commandline.Parser;
> import org.apache.commons.cli2.option.DefaultOption;
> public class WithMinimum
> {
>    public static void main(String[] args)
>    {
>       final DefaultOptionBuilder obuilder = new DefaultOptionBuilder();
>       final ArgumentBuilder abuilder = new ArgumentBuilder();
>       final GroupBuilder gbuilder = new GroupBuilder();
>       DefaultOption aOption = obuilder//
>             .withShortName("a")
>             .withLongName("a")
>             .withArgument(abuilder
>                   .withName("a")
>                   .withDefault("10")
>                   .create())
>             .create();
>       DefaultOption bOption = obuilder
>       .withShortName("b")
>       .withLongName("b")
>       .withArgument(abuilder
>             .withName("b")
>             .withMinimum(2)
>             .withMaximum(4)
>             .withDefault("100")
>             .withDefault("1000")
> //            .withDefault("10000")
> //            .withDefault("1000000")
>             .create())
>       .create();
>       Group options = gbuilder
>             .withName("options")
>             .withOption(aOption)
>             .withOption(bOption)
>             .create();
>       Parser parser = new Parser();
>       parser.setHelpTrigger("--help");
>       parser.setGroup(options);
>       CommandLine cl = parser.parseAndHelp(args);
>       if (cl == null)
>          System.exit(1);
>       int a = Integer.parseInt(cl.getValue(aOption).toString());
>       List b = cl.getValues(bOption);
>       System.out.printf("a=%d b=%s%n", a, b);
>    }
> }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to