in gshell-support/gshell-clp/src/main/java/org/apache/geronimo/gshell/clp/Printer.java [164:229]
public void printUsage(final Writer writer, final String name) {
assert writer != null;
PrintWriter out = new PrintWriter(writer);
List<Handler> argumentHandlers = new ArrayList<Handler>();
argumentHandlers.addAll(processor.getArgumentHandlers());
List<Handler> optionHandlers = new ArrayList<Handler>();
optionHandlers.addAll(processor.getOptionHandlers());
// For display purposes, we like the argument handlers in argument order, but the option handlers in alphabetical order
Collections.sort(optionHandlers, new Comparator<Handler>() {
public int compare(Handler a, Handler b) {
return a.descriptor.toString().compareTo(b.descriptor.toString());
}
});
if (name != null) {
String syntax = printerMessages.format("syntax", name);
if (!optionHandlers.isEmpty()) {
syntax = printerMessages.format("syntax.hasOptions", syntax);
}
if (!argumentHandlers.isEmpty()) {
syntax = printerMessages.format("syntax.hasArguments", syntax);
}
out.println(syntax);
out.println();
}
// Compute the maximum length of the syntax column
int len = 0;
for (Handler handler : optionHandlers) {
int curLen = getPrefixLen(handler);
len = Math.max(len, curLen);
}
for (Handler handler : argumentHandlers) {
int curLen = getPrefixLen(handler);
len = Math.max(len, curLen);
}
// And then render the handler usage
if (!argumentHandlers.isEmpty()) {
out.println(printerMessages.getMessage("arguments.header"));
for (Handler handler : argumentHandlers) {
printHandler(out, handler, len);
}
out.println();
}
if (!optionHandlers.isEmpty()) {
out.println(printerMessages.getMessage("options.header"));
for (Handler handler : optionHandlers) {
printHandler(out, handler, len);
}
out.println();
}
out.flush();
}