module Fontana::CommandUtils

Public Instance Methods

spawn_at_vendor_fontana(env, cmd, options = {}) click to toggle source
# File lib/fontana/command_utils.rb, line 16
def spawn_at_vendor_fontana(env, cmd, options = {})
  options = { chdir: FontanaClientSupport.vendor_fontana }.update(options)
  env = env.each_with_object({}){|(k,v), d| d[k.to_s] = v.to_s }
  puts "now spawning:\n  env: #{env.inspect}\n  cmd: #{cmd.inspect}\n  options: #{options.inspect}"
  pid = spawn(env, cmd, options)
  puts "spawning suceeded pid: #{pid.inspect}"
  Process.detach(pid)
  return pid
end
spawn_at_vendor_fontana_with_sweeper(*args) click to toggle source
# File lib/fontana/command_utils.rb, line 26
def spawn_at_vendor_fontana_with_sweeper(*args)
  pid = spawn_at_vendor_fontana(*args)
  at_exit{
    puts "Now killing #{pid}"
    Process.kill("INT", pid)
  }
  pid
end
system!(cmd) click to toggle source
# File lib/fontana/command_utils.rb, line 35
def system!(cmd)
  puts "now executing: #{cmd}"

  buf = []
  IO.popen("#{cmd} 2>&1") do |io|
    while line = io.gets
      puts line
      buf << line
    end
  end

  if $?.exitstatus != 0
    $stderr.puts("\e[31mFAILURE: %s\n%s\e[0m" % [cmd, buf.join.strip])
    exit(1)
  end
end
system_at_vendor_fontana!(cmd, &block) click to toggle source
# File lib/fontana/command_utils.rb, line 10
def system_at_vendor_fontana!(cmd, &block)
  FileUtils::Verbose.chdir(FontanaClientSupport.vendor_fontana) do
    return system!(cmd, &block)
  end
end