Class Shell

java.lang.Object
org.jline.shell.Shell
All Implemented Interfaces:
AutoCloseable

public class Shell extends Object implements AutoCloseable
An interactive shell that runs a read-eval-print loop (REPL) using a CommandDispatcher for command execution.

The shell is a thin REPL loop. The dispatcher is injected or auto-created as a DefaultCommandDispatcher.

Use builder() to create a shell:

 Shell shell = Shell.builder()
     .terminal(terminal)
     .prompt("myapp> ")
     .dispatcher(dispatcher)
     .groups(group1, group2)
     .build();
 shell.run();
 
Since:
4.0
See Also:
  • Method Details

    • builder

      public static ShellBuilder builder()
      Creates a new ShellBuilder.
      Returns:
      a new shell builder
    • run

      public void run() throws Exception
      Runs the interactive REPL loop.

      This method blocks until the user exits (e.g. via EOF or an exit command), or until stop() is called.

      Throws:
      Exception - if initialization or execution fails
    • stop

      public void stop()
      Stops the REPL loop. The current or next iteration will exit.
    • isRunning

      public boolean isRunning()
      Returns whether the shell is currently running.
      Returns:
      true if running
    • terminal

      public org.jline.terminal.Terminal terminal()
      Returns the terminal used by this shell.
      Returns:
      the terminal
    • reader

      public org.jline.reader.LineReader reader()
      Returns the line reader used by this shell.
      Returns:
      the line reader
    • dispatcher

      public CommandDispatcher dispatcher()
      Returns the command dispatcher used by this shell.
      Returns:
      the command dispatcher
    • close

      public void close()
      Closes this shell, releasing the dispatcher and optionally the terminal.
      Specified by:
      close in interface AutoCloseable