private Object console()

in gshell-commands/gshell-bsf/src/main/java/org/apache/geronimo/gshell/commands/bsf/ScriptAction.java [189:239]


    private Object console(final CommandContext context) throws Exception {
        assert context != null;
        IO io = context.getIo();

        if (language == null) {
            io.error("The scripting language must be configured via --language to run an interactive console");
            return Result.FAILURE;
        }

        log.debug("Starting console ({})...", language);

        final BSFEngine engine = createEngine(context);
        final ResultHolder holder = new ResultHolder();

        Console.Executor executor = new Console.Executor() {
            public Result execute(final String line) throws Exception {
                if (line == null || line.trim().equals("exit") || line.trim().equals("quit")) {
                    return Result.STOP;
                }
                else if (!line.trim().equals("")) {
                    holder.result = engine.eval("<script.console>", 1, 1, line);
                }

                return Result.CONTINUE;
            }
        };

        JLineConsole runner = new JLineConsole(executor, io);

        runner.setErrorHandler(new Console.ErrorHandler() {
            public Result handleError(final Throwable error) {
                log.error("Script evalutation failed: " + error, error);

                return Result.CONTINUE;
            }
        });

        runner.setPrompter(new Console.Prompter() {
            AnsiRenderer renderer = new AnsiRenderer();

            public String prompt() {
                return renderer.render(AnsiRenderer.encode(language, AnsiCode.BOLD) + "> ");
            }
        });

        runner.run();

        engine.terminate();

        return holder.result;
    }