30 lines
1.1 KiB
Ruby
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
|