in daemon/src/main/java/org/apache/maven/cli/MvndHelpFormatter.java [54:149]
public static String displayHelp(CLIManager cliManager) {
int terminalWidth = getTerminalWidth();
final ByteArrayOutputStream baos = new ByteArrayOutputStream();
try (PrintStream out = new PrintStream(baos, false, StandardCharsets.UTF_8.name())) {
out.println();
PrintWriter pw = new PrintWriter(out);
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp(
pw,
terminalWidth,
"mvnd [options] [<goal(s)>] [<phase(s)>]",
"\nOptions:",
cliManager.options,
1,
3,
"\n",
false);
pw.flush();
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
final String mvnHelp = new String(baos.toByteArray(), StandardCharsets.UTF_8);
final Matcher m = COLUMNS_DETECTOR_PATTERN.matcher(mvnHelp);
final String indent = m.find() ? m.group() : " ";
final String lineSeparator = System.lineSeparator();
final StringBuilder help =
new StringBuilder(mvnHelp).append(lineSeparator).append("mvnd specific options:");
Environment.documentedEntries().forEach(entry -> {
final Environment env = entry.getEntry();
help.append(lineSeparator);
int indentPos = help.length() + indent.length();
int lineEnd = help.length() + terminalWidth;
spaces(help, HelpFormatter.DEFAULT_LEFT_PAD);
final String property = env.getProperty();
if (property != null) {
help.append("-D").append(property);
if (env.getType() != OptionType.VOID) {
help.append("=<")
.append(env.getType().name().toLowerCase(Locale.ROOT))
.append('>');
}
}
final Set<String> opts = env.getOptions();
if (!opts.isEmpty()) {
if (property != null) {
help.append(';');
}
boolean first = true;
for (String opt : opts) {
if (first) {
first = false;
} else {
help.append(',');
}
help.append(opt);
}
if (env.getType() != OptionType.VOID) {
help.append(" <")
.append(env.getType().name().toLowerCase(Locale.ROOT))
.append('>');
}
}
help.append(' ');
spaces(help, indentPos - help.length());
wrap(help, toPlainText(entry.getJavaDoc()), terminalWidth, lineEnd, indent);
if (env.isDocumentedAsDiscriminating()) {
indentedLine(help, terminalWidth, "This is a discriminating start parameter.", indent);
}
if (env.getDefault() != null) {
indentedLine(help, terminalWidth, "Default: " + env.getDefault(), indent);
}
if (env.getEnvironmentVariable() != null) {
indentedLine(help, terminalWidth, "Env. variable: " + env.getEnvironmentVariable(), indent);
}
});
help.append(lineSeparator).append(lineSeparator).append("mvnd value types:");
OptionType.documentedEntries().forEach(entry -> {
final OptionType type = entry.getEntry();
help.append(lineSeparator);
int indentPos = help.length() + indent.length();
int lineEnd = help.length() + terminalWidth;
spaces(help, HelpFormatter.DEFAULT_LEFT_PAD);
help.append(type.name().toLowerCase(Locale.ROOT));
spaces(help, indentPos - help.length());
wrap(help, toPlainText(entry.getJavaDoc()), terminalWidth, lineEnd, indent);
});
return help.toString();
}