class VagrantPlugins::Registration::Plugin

Public Class Methods

register(hook) click to toggle source

Vbguest plugin updates GuestAdditions for VirtualBox before '::Vagrant::Action::Builtin::SyncedFolders' and therefore needs to be registered. Prepending Vbguest hook ensures that, but this is done only with Vbguest plugin and VirtualBox provider. In other cases the behavior is unchanged.

# File lib/vagrant-registration/plugin.rb, line 23
def register(hook)
  setup_logging

  if vbguest_plugin?
    hook.before(::VagrantVbguest::Middleware,
                         VagrantPlugins::Registration::Action.action_register)
  else
    hook.after(::Vagrant::Action::Builtin::SyncedFolders,
                       VagrantPlugins::Registration::Action.action_register)
  end
end
setup_logging() click to toggle source

This sets up our log level to be whatever VAGRANT_LOG is for loggers prepended with 'vagrant_registration'

# File lib/vagrant-registration/plugin.rb, line 65
def self.setup_logging
  require 'log4r'
  level = nil
  begin
    level = Log4r.const_get(ENV['VAGRANT_LOG'].upcase)
  rescue NameError
    # This means that the logging constant wasn't found,
    # which is fine. We just keep `level` as `nil`. But
    # we tell the user.
    level = nil
  end
  # Some constants, such as "true" resolve to booleans, so the
  # above error checking doesn't catch it. This will check to make
  # sure that the log level is an integer, as Log4r requires.
  level = nil unless level.is_a?(Integer)
  # Set the logging level on all "vagrant" namespaced
  # logs as long as we have a valid level.
  if level
    logger = Log4r::Logger.new('vagrant_registration')
    logger.outputters = Log4r::Outputter.stderr
    logger.level = level
    logger = nil
  end
end
unregister_on_destroy(hook) click to toggle source
# File lib/vagrant-registration/plugin.rb, line 40
def unregister_on_destroy(hook)
  setup_logging
  hook.prepend(VagrantPlugins::Registration::Action.action_unregister_on_destroy)
end
unregister_on_halt(hook) click to toggle source
# File lib/vagrant-registration/plugin.rb, line 35
def unregister_on_halt(hook)
  setup_logging
  hook.prepend(VagrantPlugins::Registration::Action.action_unregister_on_halt)
end
vbguest_plugin?() click to toggle source

Determines if both VirtualBox provider and Vbguest plugin are present.

# File lib/vagrant-registration/plugin.rb, line 91
def self.vbguest_plugin?
  @@vbguest_plugin ||= (
    defined?(VagrantPlugins::ProviderVirtualBox::Provider) &&
    defined?(VagrantVbguest::Middleware)
  )
end