From d708bab84a6eccdf591ba652ddfeceb8cfe7bef7 Mon Sep 17 00:00:00 2001 From: sophia Date: Fri, 13 May 2022 17:14:46 -0500 Subject: [PATCH] Add error message for errors originating from a remote --- lib/vagrant/errors.rb | 4 ++++ plugins/commands/serve/client/terminal.rb | 15 ++++++++++++--- templates/locales/en.yml | 2 ++ 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/lib/vagrant/errors.rb b/lib/vagrant/errors.rb index 2ac521a1b..1deff4346 100644 --- a/lib/vagrant/errors.rb +++ b/lib/vagrant/errors.rb @@ -928,6 +928,10 @@ module Vagrant error_key(:vagrantfile_name_error) end + class VagrantRemoteError < VagrantError + error_key(:vagrant_remote_error) + end + class VagrantfileSyntaxError < VagrantError error_key(:vagrantfile_syntax_error) end diff --git a/plugins/commands/serve/client/terminal.rb b/plugins/commands/serve/client/terminal.rb index b209e7d63..3ca46aec6 100644 --- a/plugins/commands/serve/client/terminal.rb +++ b/plugins/commands/serve/client/terminal.rb @@ -18,8 +18,12 @@ module VagrantPlugins "TerminalUI" end + def is_interactive + client.is_interactive.interactive + end + def input(prompt, **opts) - client.events( + event_resp = client.events( [ SDK::TerminalUI::Event.new( input: SDK::TerminalUI::Event::Input.new( @@ -29,8 +33,13 @@ module VagrantPlugins ) ), ].each - ).map { |resp| - resp.input.input + ) + event_resp.map { |resp| + input = resp.input + if !input.error.nil? + raise Vagrant::Errors::VagrantRemoteError, msg: input.error.message + end + input.input }.first end diff --git a/templates/locales/en.yml b/templates/locales/en.yml index 800a1d04e..a7ba58f30 100644 --- a/templates/locales/en.yml +++ b/templates/locales/en.yml @@ -1672,6 +1672,8 @@ en: Path: %{path} Line number: %{line} Message: %{message} + vagrant_remote_error: |- + %{msg} vagrantfile_syntax_error: |- There is a syntax error in the following Vagrantfile. The syntax error message is reproduced below for convenience: