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