Sha256: bafbb24369075085a5646120e1a95915f73de7ae60fe8de2dcfb93556f150bf4

Contents?: true

Size: 1.23 KB

Versions: 19

Compression:

Stored size: 1.23 KB

Contents

require 'vagrant-vbguest/helpers/rebootable'

module VagrantVbguest
  # A Vagrant middleware which checks the installed VirtualBox Guest
  # Additions to match the installed VirtualBox installation on the
  # host system.
  class Middleware
    include VagrantVbguest::Helpers::Rebootable

    def initialize(app, env)
      @app = app
      @env = env
    end

    def call(env)
      @env    = env
      vm      = env[:vm] || env[:machine]

      options = override_config(vm.config.vbguest.to_hash).freeze

      if options[:auto_update]
        machine = VagrantVbguest::Machine.new vm, options
        status  = machine.state
        vm.env.ui.send((:ok == status ? :success : :warn), I18n.t("vagrant_vbguest.status.#{status}", machine.info))
        machine.run
        reboot(vm, options) if machine.reboot?
      end
    rescue VagrantVbguest::Installer::NoInstallerFoundError => e
      vm.env.ui.error e.message
    ensure
      @app.call(env)
    end

    def override_config(opts)
      if opts[:auto_reboot] && Vagrant::VERSION.between?("1.1.0", "1.1.5") && Vagrant::VERSION != "1.1.4"
        @env[:ui].warn I18n.t("vagrant_vbguest.vagrant_11_reload_issues")
        opts.merge!({:auto_reboot => false})
      end
      opts
    end
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
vagrant-vbguest-0.29.0 lib/vagrant-vbguest/middleware.rb
vagrant-vbguest-0.28.0 lib/vagrant-vbguest/middleware.rb
vagrant-vbguest-0.27.0 lib/vagrant-vbguest/middleware.rb
vagrant-vbguest-0.26.0 lib/vagrant-vbguest/middleware.rb
vagrant-vbguest-0.25.0 lib/vagrant-vbguest/middleware.rb
vagrant-vbguest-0.24.0 lib/vagrant-vbguest/middleware.rb
vagrant-vbguest-0.24.0.beta1 lib/vagrant-vbguest/middleware.rb
vagrant-vbguest-0.23.0 lib/vagrant-vbguest/middleware.rb
vagrant-vbguest-0.22.1 lib/vagrant-vbguest/middleware.rb
vagrant-vbguest-0.22.0 lib/vagrant-vbguest/middleware.rb
vagrant-vbguest-0.21.0 lib/vagrant-vbguest/middleware.rb
vagrant-vbguest-0.20.0 lib/vagrant-vbguest/middleware.rb
vagrant-vbguest-0.19.0 lib/vagrant-vbguest/middleware.rb
vagrant-vbguest-0.18.0 lib/vagrant-vbguest/middleware.rb
vagrant-vbguest-0.17.2 lib/vagrant-vbguest/middleware.rb
vagrant-vbguest-0.17.1 lib/vagrant-vbguest/middleware.rb
vagrant-vbguest-0.17.0 lib/vagrant-vbguest/middleware.rb
vagrant-vbguest-0.17.0.beta2 lib/vagrant-vbguest/middleware.rb
vagrant-vbguest-0.17.0.beta1 lib/vagrant-vbguest/middleware.rb