Class: VagrantPlugins::Parallels::GuestDarwinCap::InstallParallelsTools

Inherits:
Object
  • Object
show all
Defined in:
lib/vagrant-parallels/guest_cap/darwin/install_parallels_tools.rb

Class Method Summary collapse

Class Method Details

.install_parallels_tools(machine) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/vagrant-parallels/guest_cap/darwin/install_parallels_tools.rb', line 6

def self.install_parallels_tools(machine)
  machine.communicate.tap do |comm|
    arch = ''
    comm.execute("uname -p") { |type, data| arch << data if type == :stdout }

    tools_iso_path = File.expand_path(
      machine.provider.driver.read_guest_tools_iso_path("darwin", arch),
      machine.env.root_path
    )
    remote_file = '/tmp/prl-tools-mac.iso'
    mount_point = "/media/prl-tools-lin_#{rand(100000)}/"

    comm.upload(tools_iso_path, remote_file)

    # Create mount point directory if needed
    if !comm.test("test -d \"#{mount_point}\"", :sudo => true)
      comm.sudo("mkdir -p \"#{mount_point}\"")
    end

    # Mount ISO and install Parallels Tools
    comm.sudo("hdiutil attach #{remote_file} -mountpoint #{mount_point}")
    comm.sudo("installer -pkg '#{mount_point}/Install.app/Contents/Resources/Install.mpkg' -target /")
    comm.sudo("hdiutil detach '#{mount_point}'")

    comm.sudo("rm -Rf \"#{mount_point}\"")
    comm.sudo("rm -f \"#{remote_file}\"")
  end
end