protected void printPrompt()

in azure-maven-plugin-lib/src/main/java/com/microsoft/azure/maven/utils/CustomTextIoStringListReader.java [39:96]


    protected void printPrompt(List<String> prompt, TextTerminal<?> textTerminal) {
        textTerminal.print(prompt);
        boolean useColon = false;
        if (promptAdjustments && prompt != null && !prompt.isEmpty()) {
            final String lastLine = prompt.get(prompt.size() - 1);
            useColon = anotherShouldAppendColon(lastLine);
        }
        if (possibleValues == null) {
            if (promptAdjustments && defaultValue != null) {
                textTerminal.print(" [" + valueFormatter.apply(defaultValue) + "]: ");
            } else {
                textTerminal.print(useColon ? ": " : " ");
            }
        } else if (promptAdjustments) {
            final int optionCount = possibleValues.size();
            if (inlinePossibleValues) {
                final String strValues = IntStream.range(0, optionCount)
                        .mapToObj(i -> possibleValues.get(i))
                        .map(option -> {
                            final boolean isDefault = (defaultValue != null) && equalsFunc.apply(defaultValue, option);
                            return (isDefault ? "*" : "") + valueFormatter.apply(option);
                        })
                        .collect(Collectors.joining(", ", " (", "): "));
                textTerminal.print(strValues);
            } else {
                textTerminal.println(useColon ? ":" : "");
                String defaultOptionText = null;
                for (int i = 0; i < optionCount; i++) {
                    final T option = possibleValues.get(i);
                    final boolean isDefault = (defaultValue != null) && equalsFunc.apply(defaultValue, option);
                    String optionId = "";
                    String optionText = valueFormatter.apply(option);
                    if (numberedPossibleValues) {
                        final int digits = ("" + optionCount).length();
                        optionId = String.format("%" + digits + "d: ", i + 1);
                        final String[] textLines = optionText.split("\\R", -1);
                        if (textLines.length > 1) {
                            final String delimiter = String.format("\n%" + (digits + 4) + "s", "");
                            optionText = Arrays.stream(textLines).collect(Collectors.joining(delimiter));
                        }
                    }

                    if (isDefault) {
                        defaultOptionText = optionId + optionText;
                        textTerminal.println(TextUtils.blue("* " + optionId + optionText));
                    } else {
                        textTerminal.println("  " + optionId + optionText);
                    }
                }
                if (StringUtils.isNotBlank(customPrompt)) {
                    textTerminal.print(customPrompt);
                } else {
                    textTerminal.print(String.format("Enter your choice%s: ", StringUtils.isNotBlank(defaultOptionText) ? String.format("[%s]",
                        TextUtils.blue(defaultOptionText)) : ""));
                }
            }
        }
    }