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

Reply via email to