Re: [CLI] - new FormatHelper produces poorly formatted option groups

Damien Carbonne <[email protected]> Thu, 30 Oct 2025 19:52:10 +0100
Newsgroups gmane.comp.jakarta.commons.user
Message-ID <[email protected]>
--------------NPe666aKb0mDpvveZB75zNud
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

Sorry, -o3 Descr is not expected.
My fault. Initialy the example had an o3 option, but I removed it to 
simplify the example. I forgot to remove it in one place.
I should have written:

I would expect the new formatter output to look like this:
-------------------------------------
usage: Command [-o1 | -o2]
Options Description
-o1 Descr
-o2 Descr



Le 30/10/2025 à 16:05, Claude Warren a écrit :
> I was on my phone when I first read this.  But now I wonder how this is
> wrong.
>
> The example adds 2 options o1 and o2 and a group comprising the 2 and the
> expected output contains o1, o2, and o3.  Where did o3 get its name?  I
> assume o3 is intended to be the group of 01 and 02, but I don't think those
> were ever delineated in the output.  Am I missing something?
>
>
>
> On Thu, Oct 30, 2025 at 12:47 PM Claude Warren<[email protected]> wrote:
>
>> Looks likeregression.  I will take a look later today.
>>
>> Claude
>>
>> LinkedIn:http://www.linkedin.com/in/claudewarren
>>
>> On Thu 30 Oct 2025, 12:12 Gary Gregory,<[email protected]> wrote:
>>
>>> Claude, any thoughts here? I was just about to push a release candidate...
>>>
>>> Gary
>>>
>>> On Sun, Oct 26, 2025 at 10:38 AM Damien Carbonne
>>> <[email protected]> wrote:
>>>> Hi,
>>>>
>>>> When using the new HelpFormatter (commons-cli-1.10.0), option groups are
>>>> poorly formatted.
>>>>
>>>> This looks like a regression.
>>>> The following code shows the difference between the new HelpFormatter
>>>> and the deprecated one:
>>>> -------------------------------------
>>>> import java.io.IOException;
>>>>
>>>> import org.apache.commons.cli.Option;
>>>> import org.apache.commons.cli.OptionGroup;
>>>> import org.apache.commons.cli.Options;
>>>>
>>>> public class CliTest {
>>>>       public static void main(String[] args) throws IOException {
>>>>           // create options and groups
>>>>           final Option o1 = new Option("o1", "Descr");
>>>>           final Option o2 = new Option("o2", "Descr");
>>>>
>>>>           final Options options = new Options();
>>>>           options.addOption(o1);
>>>>           options.addOption(o2);
>>>>
>>>>           final OptionGroup group = new OptionGroup();
>>>>           group.addOption(o1);
>>>>           group.addOption(o2);
>>>>           options.addOptionGroup(group);
>>>>
>>>>           //format options with new formatter
>>>>           final org.apache.commons.cli.help.HelpFormatter newFormatter =
>>>>
>>> org.apache.commons.cli.help.HelpFormatter.builder().setShowSince(false).get();
>>>>           newFormatter.printHelp("Command", null, options, null, true);
>>>>
>>>>           // format options with old formatter
>>>>           final org.apache.commons.cli.HelpFormatter oldFormatter =
>>>>                   new org.apache.commons.cli.HelpFormatter();
>>>>           oldFormatter.printHelp("Command", null, options, null, true);
>>>>       }
>>>> }
>>>> -------------------------------------
>>>>
>>>> The output is:
>>>> -------------------------------------
>>>> usage:  Command [-o1] [-o2]
>>>>    Options     Description
>>>>    -o1         Descr
>>>>    -o2         Descr
>>>>
>>>>
>>>> usage: Command [-o1 | -o2]
>>>>    -o1   Descr
>>>>    -o2   Descr
>>>> -------------------------------------
>>>>
>>>> Groups are not shown any more.
>>>> I would expect the new formatter output to look like this:
>>>> -------------------------------------
>>>> usage: Command [-o1 | -o2]
>>>> Options Description
>>>> -o1 Descr
>>>> -o2 Descr
>>>> -o3 Descr
>>>> -------------------------------------
>>>>
>>>> Regards,
>>>> Damien Carbonne
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail:[email protected]
>>>> For additional commands, e-mail:[email protected]
>>>>

--------------NPe666aKb0mDpvveZB75zNud--