in src/main/java/org/apache/commons/cli/help/AbstractHelpFormatter.java [421:451]
protected String toSyntaxOptions(final Iterable<Option> options, final Function<Option, OptionGroup> lookup) {
// list of groups that have been processed.
final Collection<OptionGroup> processedGroups = new ArrayList<>();
final List<Option> optList = sort(options);
final StringBuilder buff = new StringBuilder();
String prefix = "";
// iterate over the options
for (final Option option : optList) {
// get the next Option
// check if the option is part of an OptionGroup
final OptionGroup group = lookup.apply(option);
// if the option is part of a group
if (group != null) {
// and if the group has not already been processed
if (!processedGroups.contains(group)) {
// add the group to the processed list
processedGroups.add(group);
// add the usage clause
buff.append(prefix).append(toSyntaxOptions(group));
prefix = " ";
}
// otherwise the option was displayed in the group previously so ignore it.
}
// if the Option is not part of an OptionGroup
else {
buff.append(prefix).append(optionFormatBuilder.build(option).toSyntaxOption());
prefix = " ";
}
}
return buff.toString();
}