In legacy Vagrant, any exception raised that's a subclass of Vagrant::Errors::VagrantError is considered user-facing and so causes the error message to be printed to the console and the process to use exit code 1. Anything outside of that causes the process to use exit code 255. (See `bin/vagrant` for the code.) Here we mirror that behavior by treating errors that have a LocalizedMessage as user-facing and those without as unexpected. This allows the basic virtualbox component to pass in vagrant-spec!
Vagrant Core Plugins
These are plugins that ship with Vagrant. Vagrant core uses its own plugin system to power a lot of the core pieces that ship with Vagrant. Each plugin will have its own README which explains its specific role.
Generate proto
grpc_tools_ruby_protoc -I . --ruby_out=gen/plugin --grpc_out=gen/plugin ./plugin_server.proto