class Kaiser::CommandRunner

Make running easy

Public Class Methods

new(out, cmd) click to toggle source
# File lib/kaiser/command_runner.rb, line 19
def initialize(out, cmd)
  @out = out
  @cmd = cmd.tr "\n", ' '
end
run(out, cmd, &block) click to toggle source
# File lib/kaiser/command_runner.rb, line 9
def self.run(out, cmd, &block)
  out.puts "> #{cmd}"
  CommandRunner.new(out, cmd).run_command(&block)
end
run!(out, cmd, &block) click to toggle source
# File lib/kaiser/command_runner.rb, line 14
def self.run!(out, cmd, &block)
  status = run(out, cmd, &block)
  raise Kaiser::CmdError.new(cmd, status) if status.to_s != '0'
end

Public Instance Methods

print_and_return_status(status = 0) click to toggle source
print_lines(lines) { |chomp| ... } click to toggle source
run_command(&block) click to toggle source
# File lib/kaiser/command_runner.rb, line 40
def run_command(&block)
  PTY.spawn("#{@cmd} 2>&1") do |stdout, _stdin, pid|
    print_lines(stdout, &block)
    Process.wait(pid)
  end
  print_and_return_status $CHILD_STATUS.exitstatus
rescue PTY::ChildExited => e
  print_and_return_status(e.status)
end