def error(message) puts message exit 1 end def last_exit_code $?.respond_to?(:exitstatus) ? $?.exitstatus : $?.to_i end def run(cmdline, opts = {}) cmdline = cmdline.gsub(/\n/, ' ').gsub(/^\s+/, '').gsub(/\s+$/, '').gsub(/\s+/, ' ') puts cmdline unless opts[:dont_echo].to_bool system cmdline code = last_exit_code exit code if (code != 0) && !opts[:allow_failure].to_bool end def runq(msg, cmdline, options = {}) verbose = ENV['V'].to_bool puts msg if !verbose run cmdline, options.clone.merge(:dont_echo => !verbose) end