require 'json' require 'i18n' require 'virtualbox' require 'radar' require 'vagrant/util/glob_loader' module Vagrant # TODO: Move more classes over to the autoload model. We'll # start small, but slowly move everything over. autoload :CLI, 'vagrant/cli' autoload :Config, 'vagrant/config' autoload :DataStore, 'vagrant/data_store' autoload :Errors, 'vagrant/errors' module Command autoload :Base, 'vagrant/command/base' autoload :GroupBase, 'vagrant/command/group_base' autoload :Helpers, 'vagrant/command/helpers' autoload :NamedBase, 'vagrant/command/named_base' end # The source root is the path to the root directory of # the Vagrant gem. def self.source_root @source_root ||= File.expand_path('../../', __FILE__) end end # Setup Radar application for exception catching Radar::Application.new(:vagrant) do |app| app.reject :class, Vagrant::Errors::VagrantError app.reject :class, SystemExit app.reporters.use :file app.rescue_at_exit! end # Default I18n to load the en locale I18n.load_path << File.expand_path("templates/locales/en.yml", Vagrant.source_root) # Load them up. One day we'll convert this to autoloads. Today # is not that day. Low hanging fruit for anyone wishing to do it. libdir = File.expand_path("lib/vagrant", Vagrant.source_root) Vagrant::GlobLoader.glob_require(libdir, %w{util/stacked_proc_runner downloaders/base provisioners/base provisioners/chef systems/base hosts/base}) # Initialize the built-in actions Vagrant::Action.builtin!