Hello Damien and all, This issue has been fixed with Claude's PR https://github.com/apache/commons-cli/pull/411
Thank you, Claude! Damien: Would you please test with a local git master build or a snapshot dependency from https://repository.apache.org/content/repositories/snapshots/ ? Thank you, Gary On Thu, Oct 30, 2025 at 3:22 PM Damien Carbonne <[email protected]> wrote: > > I think that the issue is here, in > org.apache.commons.cli.help.AbstractHelpFormatter: > > public final void printHelp(final String cmdLineSyntax, final String > header, final Options options, final String footer, final boolean > autoUsage) throws IOException { > printHelp(cmdLineSyntax, header, options.getOptions(), footer, > autoUsage); // Here groups are lost > } > > Options contains groups, but Iterable<Option> (returned by > options.getOptions()) does not. > Therefore, the called printHelp is unable to format options correctly. > > One could construct Options from Iterable<Option> and revert the calls. > > > 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] > >>>> > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
