module PiotrbCliUtils::CmdLoop

Public Instance Methods

run_cmd_loop(prompt = '=> ') { |line| ... } click to toggle source
# File lib/piotrb_cli_utils/cmd_loop.rb, line 5
def run_cmd_loop(prompt = '=> ')
  reader = TTY::Reader.new(interrupt: :noop)
  reader.on(:keyctrl_c, :keyescape) do
    return :abort
  end

  reader.on(:keyctrl_d) do
    return :eof
  end

  catch(:stop) do
    loop do
      line = reader.read_line(prompt)
      line.strip!
      yield(line)
    end
  end || :stopped
end