diff --git a/CHANGELOG.md b/CHANGELOG.md index 53565b085..72a0903d6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -40,6 +40,8 @@ IMPROVEMENTS: - synced\_folders/nfs: Won't use `sudo` to write to /etc/exports if there are write privileges. [GH-2643] - synced\_folders/smb: Credentials from one SMB will be copied to the rest. [GH-4675] + - synced\_filders/rsync: Added rsync__showoutput option to echo rsync output + to console [GH-4201] BUG FIXES: diff --git a/plugins/synced_folders/rsync/helper.rb b/plugins/synced_folders/rsync/helper.rb index bc7f6d116..21d0890ad 100644 --- a/plugins/synced_folders/rsync/helper.rb +++ b/plugins/synced_folders/rsync/helper.rb @@ -121,13 +121,23 @@ module VagrantPlugins machine.ui.info(I18n.t( "vagrant.rsync_folder_excludes", excludes: excludes.inspect)) end + if opts.include?(:showoutput) + machine.ui.info(I18n.t("vagrant.rsync_showingoutput")); + end # If we have tasks to do before rsyncing, do those. if machine.guest.capability?(:rsync_pre) machine.guest.capability(:rsync_pre, opts) end - r = Vagrant::Util::Subprocess.execute(*(command + [command_opts])) + if opts.include?(:showoutput) + command_opts[:notify] = [ :stdout, :stderr ]; + r = Vagrant::Util::Subprocess.execute( + *(command + [command_opts])) { |io_name,data| machine.ui.info("rsync[#{io_name}] -> #{data}") } + else + r = Vagrant::Util::Subprocess.execute(*(command + [command_opts])) + end + if r.exit_code != 0 raise Vagrant::Errors::RSyncError, command: command.join(" "), diff --git a/templates/locales/en.yml b/templates/locales/en.yml index 81365587d..908e3bfea 100644 --- a/templates/locales/en.yml +++ b/templates/locales/en.yml @@ -212,6 +212,7 @@ en: The provider ('%{provider}') for the machine '%{name}' is using a proxy machine. RSync will sync to this proxy instead of directly to the environment itself. + rsync_showing_output: "Showing rsync output..." rsync_ssh_password: |- The machine you're rsyncing folders to is configured to use password-based authentication. Vagrant can't script rsync to automatically diff --git a/website/docs/source/v2/synced-folders/rsync.html.md b/website/docs/source/v2/synced-folders/rsync.html.md index 62e88d0dd..d92c6d46c 100644 --- a/website/docs/source/v2/synced-folders/rsync.html.md +++ b/website/docs/source/v2/synced-folders/rsync.html.md @@ -62,6 +62,10 @@ The rsync synced folder type accepts the following options: pattern. By default, the ".vagrant/" directory is excluded. We recommend excluding revision control directories such as ".git/" as well. +* `rsync__showoutput` (boolean) - If true, then the output from the rsync + process will be echoed to the console. The output of rsync is subject + to rsync__args of course. By default, this is false. + ## Example The following is an example of using RSync to sync a folder: