private void handlePrompt()

in common/src/main/java/org/mvndaemon/mvnd/common/logging/TerminalInputHandler.java [164:199]


    private void handlePrompt(Message.Prompt prompt) throws IOException {
        if (daemonDispatch == null) {
            return;
        }
        if (prompt.getMessage() != null) {
            String msg = formatPromptMessage(prompt);
            terminal.writer().print(msg);
        }
        terminal.flush();

        StringBuilder sb = new StringBuilder();
        while (true) {
            int c = terminal.reader().read();
            if (c < 0) {
                break;
            } else if (c == '\n' || c == '\r') {
                terminal.writer().println();
                daemonDispatch.accept(prompt.response(sb.toString()));
                break;
            } else if (c == 127) { // Backspace
                if (sb.length() > 0) {
                    sb.setLength(sb.length() - 1);
                    terminal.writer().write("\b \b");
                    terminal.writer().flush();
                }
            } else {
                terminal.writer().print((char) c);
                terminal.writer().flush();
                sb.append((char) c);
            }
        }
        // After prompt is handled, go back to control key listening only if not dumb
        if (!dumb) {
            inputRequests.offer(InputRequest.forControlKeys());
        }
    }