diff --git a/lib/vagrant/errors.rb b/lib/vagrant/errors.rb index 1377464bb..dc24536d3 100644 --- a/lib/vagrant/errors.rb +++ b/lib/vagrant/errors.rb @@ -163,6 +163,14 @@ module Vagrant error_key(:cli_invalid_options) end + class CommandUnavailable < VagrantError + error_key(:command_unavailable) + end + + class CommandUnavailableWindows < VagrantError + error_key(:command_unavailable_windows) + end + class ConfigInvalid < VagrantError error_key(:config_invalid) end diff --git a/lib/vagrant/util/subprocess.rb b/lib/vagrant/util/subprocess.rb index 4379304b8..c9be8eafe 100644 --- a/lib/vagrant/util/subprocess.rb +++ b/lib/vagrant/util/subprocess.rb @@ -5,6 +5,7 @@ require 'log4r' require 'vagrant/util/platform' require 'vagrant/util/safe_chdir' +require 'vagrant/util/which' module Vagrant module Util @@ -26,6 +27,11 @@ module Vagrant def initialize(*command) @options = command.last.is_a?(Hash) ? command.pop : {} @command = command + @command[0] = Which.which(@command[0]) unless File.exists? @command[0] + unless @command[0] + raise Errors::CommandUnavailableWindows if Platform.windows? + raise Errors::CommandUnavailable + end @logger = Log4r::Logger.new("vagrant::util::subprocess") end diff --git a/templates/locales/en.yml b/templates/locales/en.yml index 43f7ce41b..06979f7b7 100644 --- a/templates/locales/en.yml +++ b/templates/locales/en.yml @@ -167,6 +167,8 @@ en: available below. %{help} + command_unavailable: "command binary could not be found. Is this application installed?" + command_unavailable_windows: "command executable not found in any directories in the %PATH% variable." config_invalid: |- There are errors in the configuration of this machine. Please fix the following errors and try again: