lib/autowow/executor.rb in autowow-0.8.0 vs lib/autowow/executor.rb in autowow-0.8.1

- old
+ new

@@ -1,49 +1,56 @@ -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) - @tty_command = tty_command - end - - def run(array) - @tty_command.run(*array) - 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)) - end - - def quiet - @quiet ||= RunWrapper.new(TTY::Command.new(pty: true, printer: :null)) - end - - include ReflectionUtils::CreateModuleFunctions - end -end +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