Sha256: 38f6b7480f7058435daf75adc33921751ea53a2132ff6291f229226c96247183

Contents?: true

Size: 1.32 KB

Versions: 2

Compression:

Stored size: 1.32 KB

Contents

module VagrantVbguest

  class Detector

    def initialize(vm, options)
      @vm = vm
      @options = options
    end

    def iso_path
      @iso_path ||= autodetect_iso
    end

    private

      def autodetect_iso
        path = media_manager_iso || guess_iso || web_iso
        raise VagrantVbguest::IsoPathAutodetectionError if !path || path.empty?
        path
      end

      def media_manager_iso
        (m = @vm.driver.execute('list', 'dvds').match(/^.+:\s+(.*VBoxGuestAdditions.iso)$/i)) && m[1]
      end

      def guess_iso
        path_platform = if Vagrant::Util::Platform.linux?
          "/usr/share/virtualbox/VBoxGuestAdditions.iso"
        elsif Vagrant::Util::Platform.darwin?
          "/Applications/VirtualBox.app/Contents/MacOS/VBoxGuestAdditions.iso"
        elsif Vagrant::Util::Platform.windows?
          if (p = ENV["VBOX_INSTALL_PATH"]) && !p.empty?
            File.join(p, "VBoxGuestAdditions.iso")
          else
            File.join((ENV["PROGRAM_FILES"] || ENV["ProgramW6432"] || ENV["PROGRAMFILES"]), "/Oracle/VirtualBox/VBoxGuestAdditions.iso")
          end
        end
        File.exists?(path_platform) ? path_platform : nil
      end

      def web_iso
        "http://download.virtualbox.org/virtualbox/$VBOX_VERSION/VBoxGuestAdditions_$VBOX_VERSION.iso" unless @options[:no_remote]
      end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
vagrant-vbguest-0.4.0 lib/vagrant-vbguest/detector.rb
vagrant-vbguest-0.3.5 lib/vagrant-vbguest/detector.rb