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

Emmanuel Bourg commented on CLI-169:
------------------------------------

Actually the value separator is not the character between the option and its 
value, it's a character that can be used to split a token into several values.

For example:

{code}--classpath foo.jar:bar.jar:cli.jar{code}

If the 'classpath' option is defined with ':' as value separator, it'll receive 
3 values: foo.jar, bar.jar and cli.jar.

The javadoc isn't clear on the purpose of the value separator, I'll try to 
improve it.

> HelpFormatter ignores Option's value separator
> ----------------------------------------------
>
>                 Key: CLI-169
>                 URL: https://issues.apache.org/jira/browse/CLI-169
>             Project: Commons CLI
>          Issue Type: Bug
>          Components: CLI-1.x, Help formatter
>    Affects Versions: 1.2
>            Reporter: J. Lewis Muir
>             Fix For: 1.2
>
>         Attachments: use-value-separator-in-help-formatter.patch
>
>   Original Estimate: 0.5h
>  Remaining Estimate: 0.5h
>
> The HelpFormatter always renders a space between the option name and value 
> even if the option has a value separator that is not a space.  For example, 
> this option:
> {code}
> Option option = new Option("B", "bsize", true, "block size in bytes");
> option.setArgName("SIZE");
> option.setValueSeparator('=');
> {code}
> is rendered like this:
> {noformat}
> -B,--bsize <SIZE>  block size in bytes
> {noformat}
> But I would expect it to be rendered like this:
> {noformat}
> -B,--bsize=<SIZE>  block size in bytes
> {noformat}
> For the automatically generated usage message, a similar problem exists.  I 
> changed it to try to use the value separator when rendering the option with 
> the short name only if there's no long name.  If there's no short name, it 
> always tries to use the value separator with the long name rendering.
> For example, consider this option containing a short name and a specified 
> value separator:
> {code}
> Option option = new Option("B", true, "block size in bytes");
> option.setArgName("SIZE");
> option.setValueSeparator('=');
> {code}
> The automatically generated usage message with my changes would look like 
> this:
> {noformat}
> usage: app [-B=<SIZE>]
> {noformat}
> If the same option included a long name too:
> {code}
> Option option = new Option("B", "bsize", true, "block size in bytes");
> option.setArgName("SIZE");
> option.setValueSeparator('=');
> {code}
> with my changes the value separator is assumed to be meant for use with the 
> long name.  The short option rendering in the usage message will not try to 
> use the value separator and will render the usage message like this:
> {noformat}
> usage: app [-B <SIZE>]
> {noformat}
> Attached is a patch for these fixes with test cases.  The patch is against 
> [http://svn.apache.org/repos/asf/commons/proper/cli/branches/cli-1.x].

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