[CLI] - new FormatHelper produces poorly formatted option groups

Damien Carbonne <[email protected]> Sun, 26 Oct 2025 15:37:14 +0100
Newsgroups gmane.comp.jakarta.commons.user
Message-ID <[email protected]>
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