Class Terminal

java.lang.Object
org.elasticsearch.cli.Terminal

public abstract class Terminal extends Object
A Terminal wraps access to reading input and writing output for a cli. The available methods are similar to those of Console, with the ability to read either normal text or a password, and the ability to print a line of text. Printing is also gated by the Terminal.Verbosity of the terminal, which allows println(Verbosity,CharSequence) calls which act like a logger, only actually printing if the verbosity level of the terminal is above the verbosity of the message.
  • Field Details

    • DEFAULT

      public static final Terminal DEFAULT
      The default terminal implementation, which will be a console if available, or stdout/stderr if not.
  • Constructor Details

    • Terminal

      protected Terminal(Reader reader, PrintWriter outWriter, PrintWriter errWriter)
      Constructs a terminal instance.
      Parameters:
      reader - A character-based reader over the input of this terminal
      outWriter - A character-based writer for the output of this terminal
      errWriter - A character-based writer for the error stream of this terminal
  • Method Details

    • setVerbosity

      public void setVerbosity(Terminal.Verbosity verbosity)
      Sets the verbosity of the terminal.

      Defaults to Terminal.Verbosity.NORMAL.

    • getVerbosity

      public Terminal.Verbosity getVerbosity()
      Return the current verbosity level of this terminal.
    • readText

      public String readText(String prompt)
      Reads clear text from the terminal input. See Console.readLine().
    • readSecret

      public char[] readSecret(String prompt)
      Reads password text from the terminal input. See Console.readPassword()}.
    • getReader

      public final Reader getReader()
      Returns a Reader which can be used to read directly from the terminal using standard input.
    • getWriter

      public final PrintWriter getWriter()
      Returns a Writer which can be used to write to the terminal directly using standard output.
    • getErrorWriter

      public final PrintWriter getErrorWriter()
      Returns a Writer which can be used to write to the terminal directly using standard error.
    • getInputStream

      @Nullable public InputStream getInputStream()
      Returns an InputStream which can be used to read from the terminal directly using standard input.

      May return null if this Terminal is not capable of binary input. This corresponds with the underlying stream of bytes read by reader.

    • getOutputStream

      @Nullable public OutputStream getOutputStream()
      Returns an OutputStream which can be used to write to the terminal directly using standard output.

      May return null if this Terminal is not capable of binary output. This corresponds with the underlying stream of bytes written to by getWriter().

    • println

      public final void println(CharSequence msg)
      Prints a line to the terminal at Terminal.Verbosity.NORMAL verbosity level.
    • println

      public final void println(Terminal.Verbosity verbosity, CharSequence msg)
      Prints a line to the terminal at verbosity level.
    • print

      public final void print(Terminal.Verbosity verbosity, String msg)
      Prints message to the terminal's standard output at verbosity level, without a newline.
    • print

      protected void print(Terminal.Verbosity verbosity, PrintWriter writer, CharSequence msg, boolean newline)
      Prints message to the terminal at verbosity level. Subclasses may override if the writers are not implemented.
    • errorPrint

      public final void errorPrint(Terminal.Verbosity verbosity, String msg)
      Prints a line to the terminal's standard error at Terminal.Verbosity.NORMAL verbosity level, without a newline.
    • errorPrintln

      public final void errorPrintln(String msg)
      Prints a line to the terminal's standard error at Terminal.Verbosity.NORMAL verbosity level.
    • errorPrintln

      public final void errorPrintln(Terminal.Verbosity verbosity, String msg)
      Prints a line to the terminal's standard error at verbosity level.
    • isPrintable

      public final boolean isPrintable(Terminal.Verbosity verbosity)
      Checks if is enough verbosity level to be printed
    • promptYesNo

      public final boolean promptYesNo(String prompt, boolean defaultYes)
      Prompt for a yes or no answer from the user. This method will loop until 'y' or 'n' (or the default empty value) is entered.
    • readLineToCharArray

      public static char[] readLineToCharArray(Reader reader)
      Read from the reader until we find a newline. If that newline character is immediately preceded by a carriage return, we have a Windows-style newline, so we discard the carriage return as well as the newline.
    • flush

      public final void flush()
      Flush the outputs of this terminal.
    • isHeadless

      public boolean isHeadless()
      Indicates whether this terminal is for a headless system i.e. is not interactive. If an instances answers false, interactive operations can be attempted, but it is not guaranteed that they will succeed.
      Returns:
      if this terminal is headless.