module Akabei::System
Public Instance Methods
sudo(args, opts)
click to toggle source
# File lib/akabei/system.rb, line 17 def sudo(args, opts) if opts.has_key?(:env) opts = opts.dup args = args.dup env = opts.delete(:env) env.each do |k, v| args.unshift("#{k}=#{v}") end args.unshift('env') end puts "SUDO: #{args.join(' ')}" system(%w[sudo] + args, opts) end
system(args, opts)
click to toggle source
# File lib/akabei/system.rb, line 32 def system(args, opts) opts = opts.dup env = {} opts.delete(:env).tap do |e| break unless e e.each do |k, v| env[k.to_s] = v.to_s end end opts.delete(:arch).tap do |a| break unless a args = args.dup args.unshift('setarch', a) end pid = Kernel.spawn(env, *args.map(&:to_s), opts) begin _, status = Process.waitpid2(pid) unless status.success? raise CommandFailed.new(env, args, opts) end rescue SignalException => e # Always raise an error because mkarchroot exits with 0 even if it is # interrupted. Process.waitpid2(pid) raise CommandFailed.new(env, args, opts) end status end