vaguerent/plugins/guests/darwin/cap/mount_vmware_shared_folder.rb
Leo Simons fec14cf04c Use -f argument to rm to force-remove files.
When using pty=true, removing files using sudo may request confirmation,
which will hang the connection.

Similarly, sometimes assumptions about file existence may be wrong and
in those cases it seems better to continue on as long as the file does
not exist, so -f makes sense there, too.
2014-08-29 10:51:31 +02:00

37 lines
1.2 KiB
Ruby

module VagrantPlugins
module GuestDarwin
module Cap
class MountVmwareSharedFolder
# we seem to be unable to ask 'mount -t vmhgfs' to mount the roots
# of specific shares, so instead we symlink from what is already
# mounted by the guest tools
# (ie. the behaviour of the VMware_fusion provider prior to 0.8.x)
def self.mount_vmware_shared_folder(machine, name, guestpath, options)
machine.communicate.tap do |comm|
# clear prior symlink
if comm.test("test -L \"#{guestpath}\"", sudo: true)
comm.sudo("rm -f \"#{guestpath}\"")
end
# clear prior directory if exists
if comm.test("test -d \"#{guestpath}\"", sudo: true)
comm.sudo("rm -Rf \"#{guestpath}\"")
end
# create intermediate directories if needed
intermediate_dir = File.dirname(guestpath)
if !comm.test("test -d \"#{intermediate_dir}\"", sudo: true)
comm.sudo("mkdir -p \"#{intermediate_dir}\"")
end
# finally make the symlink
comm.sudo("ln -s \"/Volumes/VMware Shared Folders/#{name}\" \"#{guestpath}\"")
end
end
end
end
end
end