require 'pathname' require 'json' require 'i18n' require 'virtualbox' module Vagrant # TODO: Move more classes over to the autoload model. We'll # start small, but slowly move everything over. autoload :Box, 'vagrant/box' autoload :BoxCollection, 'vagrant/box_collection' autoload :CLI, 'vagrant/cli' autoload :Config, 'vagrant/config' autoload :DataStore, 'vagrant/data_store' autoload :Errors, 'vagrant/errors' autoload :Plugin, 'vagrant/plugin' autoload :TestHelpers, 'vagrant/test_helpers' autoload :Util, 'vagrant/util' 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 ||= Pathname.new(File.expand_path('../../', __FILE__)) end 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::Util::GlobLoader.glob_require(libdir, %w{ downloaders/base provisioners/base provisioners/chef systems/base hosts/base}) # Initialize the built-in actions and load the plugins. Vagrant::Action.builtin! Vagrant::Plugin.load!