require "tty-command" module Autowow module Executor class Pretty < TTY::Command::Printers::Pretty def print_command_out_data(cmd, *args); end def print_command_err_data(cmd, *args); end def print_command_exit(cmd, status, runtime, *args) super write("") end end class PrettyWithOutput < TTY::Command::Printers::Pretty def print_command_exit(cmd, status, runtime, *args) super write("") end end class RunWrapper def initialize(tty_command, fail_silently: false) @tty_command = tty_command @fail_silently = fail_silently end def run(array) begin @tty_command.run(*array) rescue TTY::Command::ExitError => e raise e unless @fail_silently exit 1 end end def run!(array) @tty_command.run!(*array) end end def pretty @pretty ||= RunWrapper.new(TTY::Command.new(pty: true, printer: Pretty)) end def pretty_with_output @pretty_with_output ||= RunWrapper.new(TTY::Command.new(pty: true, printer: PrettyWithOutput), fail_silently: true) end def quiet @quiet ||= RunWrapper.new(TTY::Command.new(pty: true, printer: :null)) end include ReflectionUtils::CreateModuleFunctions end end