in src/main/java/org/apache/commons/cli/HelpFormatter.java [852:890]
public void printUsage(final PrintWriter pw, final int width, final String app, final Options options) {
// initialize the string buffer
final StringBuilder buff = new StringBuilder(getSyntaxPrefix()).append(app).append(Char.SP);
// create a list for processed option groups
final Collection<OptionGroup> processedGroups = new ArrayList<>();
final List<Option> optList = new ArrayList<>(options.getOptions());
if (getOptionComparator() != null) {
Collections.sort(optList, getOptionComparator());
}
// iterate over the options
for (final Iterator<Option> it = optList.iterator(); it.hasNext();) {
// get the next Option
final Option option = it.next();
// check if the option is part of an OptionGroup
final OptionGroup group = options.getOptionGroup(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
appendOptionGroup(buff, group);
}
// otherwise the option was displayed in the group
// previously so ignore it.
}
// if the Option is not part of an OptionGroup
else {
appendOption(buff, option, option.isRequired());
}
if (it.hasNext()) {
buff.append(Char.SP);
}
}
// call printWrapped
printWrapped(pw, width, buff.toString().indexOf(' ') + 1, buff.toString());
}