Fix shell provisioner to run with new machine abstraction

This commit is contained in:
Mitchell Hashimoto 2012-08-21 16:57:59 -07:00
parent a238e06795
commit ed1bc58735
1 changed files with 12 additions and 10 deletions

View File

@ -76,18 +76,20 @@ module VagrantPlugins
command = "chmod +x #{config.upload_path} && #{config.upload_path}#{args}" command = "chmod +x #{config.upload_path} && #{config.upload_path}#{args}"
with_script_file do |path| with_script_file do |path|
# Upload the script to the VM # Upload the script to the machine
env[:vm].channel.upload(path.to_s, config.upload_path) env[:machine].communicate.tap do |comm|
comm.upload(path.to_s, config.upload_path)
# Execute it with sudo # Execute it with sudo
env[:vm].channel.sudo(command) do |type, data| comm.sudo(command) do |type, data|
if [:stderr, :stdout].include?(type) if [:stderr, :stdout].include?(type)
# Output the data with the proper color based on the stream. # Output the data with the proper color based on the stream.
color = type == :stdout ? :green : :red color = type == :stdout ? :green : :red
# Note: Be sure to chomp the data to avoid the newlines that the # Note: Be sure to chomp the data to avoid the newlines that the
# Chef outputs. # Chef outputs.
env[:ui].info(data.chomp, :color => color, :prefix => false) env[:ui].info(data.chomp, :color => color, :prefix => false)
end
end end
end end
end end