}
synopsis.append(commandName).appendWords(toSynopsisUsage(sortOptions(command.getCommandOptions())));
options.addAll(command.getCommandOptions());
// command arguments (optional)
ArgumentsMetadata arguments = command.getArguments();
if (arguments != null) {
synopsis.append("[--]")
.append(UsageHelper.toUsage(arguments));
}
synopsis.newline();
synopsis.newline();
//
// OPTIONS
//
if (options.size() > 0 || arguments != null) {
options = sortOptions(options);
out.append("OPTIONS").newline();
for (OptionMetadata option : options) {
// skip hidden options
if (option.isHidden()) {
continue;
}
// option names
UsagePrinter optionPrinter = out.newIndentedPrinter(8);
optionPrinter.append(UsageHelper.toDescription(option)).newline();
// description
UsagePrinter descriptionPrinter = optionPrinter.newIndentedPrinter(4);
descriptionPrinter.append(option.getDescription()).newline();
descriptionPrinter.newline();
}
if (arguments != null) {
// "--" option
UsagePrinter optionPrinter = out.newIndentedPrinter(8);
optionPrinter.append("--").newline();
// description
UsagePrinter descriptionPrinter = optionPrinter.newIndentedPrinter(4);
descriptionPrinter.append("This option can be used to separate command-line options from the " +
"list of argument, (useful when arguments might be mistaken for command-line options").newline();
descriptionPrinter.newline();
// arguments name
optionPrinter.append(UsageHelper.toDescription(arguments)).newline();
// description
descriptionPrinter.append(arguments.getDescription()).newline();
descriptionPrinter.newline();
}
}
}