lib/autowow/executor.rb in autowow-0.12.1 vs lib/autowow/executor.rb in autowow-0.13.0

- old
+ new

@@ -1,100 +1,100 @@ -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(TTY::Command::Cmd.new("dummy"), "") - end - end - - class PrettyWithOutput < TTY::Command::Printers::Pretty - def print_command_exit(cmd, status, runtime, *args) - super - write(TTY::Command::Cmd.new("dummy"), "") - end - end - - class BufferingPretty < TTY::Command::Printers::Pretty - def initialize(*) - super - @out = "" - end - - def print_command_out_data(cmd, *args) - @out << args.join(" ") - return unless multiple_lines?(@out) - finished_lines(@out).each { |line| write(cmd, line) } - @out = unfinished_line(@out) - end - alias_method :print_command_err_data, :print_command_out_data - - def print_command_exit(cmd, status, runtime, *args) - @out.each_line.map(&:chomp).each { |line| write(cmd, line) } - super - write(TTY::Command::Cmd.new("dummy"), "", false) - end - - def write(cmd, message, uuid_needed = true) - out = [] - out << "[#{decorate(cmd.uuid, :green)}] " if uuid_needed && !cmd.uuid.nil? - out << "#{message}\n" - output << out.join - end - - def finished_lines(string) - string.each_line.to_a[0..-2].map(&:chomp) - end - - def unfinished_line(string) - string.each_line.to_a[-1] - end - - def multiple_lines?(string) - string.each_line.count > 1 - 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(tty_params.merge(printer: Pretty))) - end - - def pretty_with_output - @pretty_with_output ||= RunWrapper.new(TTY::Command.new(tty_params.merge(printer: BufferingPretty)), fail_silently: true) - end - - def quiet - @quiet ||= RunWrapper.new(TTY::Command.new(tty_params.merge(printer: :null))) - end - - def tty_params - { pty: true, verbose: false } - 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(TTY::Command::Cmd.new("dummy"), "") + end + end + + class PrettyWithOutput < TTY::Command::Printers::Pretty + def print_command_exit(cmd, status, runtime, *args) + super + write(TTY::Command::Cmd.new("dummy"), "") + end + end + + class BufferingPretty < TTY::Command::Printers::Pretty + def initialize(*) + super + @out = "" + end + + def print_command_out_data(cmd, *args) + @out << args.join(" ") + return unless multiple_lines?(@out) + finished_lines(@out).each { |line| write(cmd, line) } + @out = unfinished_line(@out) + end + alias_method :print_command_err_data, :print_command_out_data + + def print_command_exit(cmd, status, runtime, *args) + @out.each_line.map(&:chomp).each { |line| write(cmd, line) } + super + write(TTY::Command::Cmd.new("dummy"), "", false) + end + + def write(cmd, message, uuid_needed = true) + out = [] + out << "[#{decorate(cmd.uuid, :green)}] " if uuid_needed && !cmd.uuid.nil? + out << "#{message}\n" + output << out.join + end + + def finished_lines(string) + string.each_line.to_a[0..-2].map(&:chomp) + end + + def unfinished_line(string) + string.each_line.to_a[-1] + end + + def multiple_lines?(string) + string.each_line.count > 1 + 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(tty_params.merge(printer: Pretty))) + end + + def pretty_with_output + @pretty_with_output ||= RunWrapper.new(TTY::Command.new(tty_params.merge(printer: BufferingPretty)), fail_silently: true) + end + + def quiet + @quiet ||= RunWrapper.new(TTY::Command.new(tty_params.merge(printer: :null))) + end + + def tty_params + { pty: true, verbose: false } + end + + include ReflectionUtils::CreateModuleFunctions + end +end