OS X's `xargs` does not support the `-r` flag (which means "do not
execute the command even once if there are no arguments"), but
behaves by default as if it was specified.
You can verify this yourself with this test:
$ touch zero-length-file
$ xargs echo <zero-length-file
If `echo` is executed, you will see a blank line. If it is not
executed (i.e. `-r` is specified or the behavior is implied) then
you will see no blank line.
32 lines
808 B
Ruby
32 lines
808 B
Ruby
module VagrantPlugins
|
|
module GuestDarwin
|
|
module Cap
|
|
class RSync
|
|
def self.rsync_installed(machine)
|
|
machine.communicate.test("which rsync")
|
|
end
|
|
|
|
def self.rsync_command(machine)
|
|
"sudo rsync"
|
|
end
|
|
|
|
def self.rsync_pre(machine, opts)
|
|
machine.communicate.tap do |comm|
|
|
comm.sudo("mkdir -p '#{opts[:guestpath]}'")
|
|
end
|
|
end
|
|
|
|
def self.rsync_post(machine, opts)
|
|
if opts.has_key?(:chown) && !opts[:chown]
|
|
return
|
|
end
|
|
|
|
machine.communicate.sudo(
|
|
"find '#{opts[:guestpath]}' '(' ! -user #{opts[:owner]} -or ! -group #{opts[:group]} ')' -print0 | " +
|
|
"xargs -0 chown #{opts[:owner]}:#{opts[:group]}")
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|