30 lines
1.1 KiB
Ruby

# Copyright (c) HashiCorp, Inc.
# SPDX-License-Identifier: BUSL-1.1
module VagrantPlugins
module GuestWindows
module Cap
class RSync
def self.rsync_scrub_guestpath( machine, opts )
# Windows guests most often use cygwin-dependent rsync utilities
# that expect "/cygdrive/c" instead of "c:" as the path prefix
# some vagrant code may pass guest paths with drive-lettered paths here
opts[:guestpath].gsub( /^([a-zA-Z]):/, '/cygdrive/\1' )
end
def self.rsync_pre(machine, opts)
machine.communicate.tap do |comm|
# rsync does not construct any gaps in the path to the target directory
# make sure that all subdirectories are created
# NB: Per #11878, the `mkdir` command on Windows is different than used on Unix.
# This formulation matches the form used in the WinRM communicator plugin.
# This will ignore any -p switches, which are redundant in PowerShell,
# and ambiguous in PowerShell 4+
comm.execute("mkdir \"#{opts[:guestpath]}\" -force")
end
end
end
end
end
end