in lib/omnibus/util.rb [81:121]
def shellout(*args)
options = args.last.is_a?(Hash) ? args.pop : {}
options = SHELLOUT_OPTIONS.merge(options)
command_string = args.join(" ")
in_msys = options.delete(:in_msys_bash) && ENV["MSYSTEM"]
command_string = "bash -c \'#{command_string}\'" if in_msys
log_level = options.delete(:log_level)
options[:live_stream] ||= log.live_stream(:internal)
if options[:env]
options[:environment] = options.fetch(:environment, {}).merge(options[:env])
end
unless options[:environment].empty?
log.public_send(log_level, log_key) { "Environment:" }
options[:environment].sort.each do |key, value|
log.public_send(log_level, log_key) { " #{key}=#{value.inspect}" }
end
end
log.public_send(log_level, log_key) { "$ #{command_string}" }
cmd = Mixlib::ShellOut.new(command_string, options)
cmd.environment["HOME"] = "/tmp" unless ENV["HOME"]
cmd.run_command
cmd
end