module VagrantPlugins module FileUpload class Provisioner < Vagrant.plugin("2", :provisioner) def provision @machine.communicate.tap do |comm| destination = expand_guest_path(config.destination) # Make sure the remote path exists command = "mkdir -p %s" % File.dirname(destination) comm.execute(command) # now upload the file comm.upload(File.expand_path(config.source), destination) end end private # Expand the guest path if the guest has the capability def expand_guest_path(destination) if machine.guest.capability?(:shell_expand_guest_path) machine.guest.capability(:shell_expand_guest_path, destination) else destination end end end end end