Hi Damien, Thank you for the sanity check.
Gary On Wed, Nov 5, 2025, 17:07 Damien Carbonne <[email protected]> wrote: > Hi Gary, > > Using commons-cli-1.11.0-SNAPSHOT, the output of the sample code is now: > usage: Command -o1 | -o2 > > Options Description > -o1 Descr > -o2 Descr > > usage: Command -o1 | -o2 > -o1 Descr > -o2 Descr > > If the group is declared optional, then the output is: > usage: Command [-o1 | -o2] > > Options Description > -o1 Descr > -o2 Descr > > usage: Command [-o1 | -o2] > -o1 Descr > -o2 Descr > > This seems correct and consistent. > > Thank you. > Damien > > Le 05/11/2025 à 13:34, Gary Gregory a écrit : > > 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] > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > >
