public static String displayHelp()

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();
    }