lib/librarian/puppet/util.rb in librarian-puppet-2.2.3 vs lib/librarian/puppet/util.rb in librarian-puppet-3.0.0

- old
+ new

@@ -24,10 +24,24 @@ # see also https://tickets.opscode.com/browse/CHEF-833 # # If the rsync configuration parameter is set, use rsync instead of FileUtils def cp_r(src, dest) if rsync? - Rsync.run(File.join(src, "/"), dest, ['-avz', '--delete']) + if Gem.win_platform? + src_clean = "#{src}".gsub(/^([a-z])\:/i,'/cygdrive/\1') + dest_clean = "#{dest}".gsub(/^([a-z])\:/i,'/cygdrive/\1') + else + src_clean = src + dest_clean = dest + end + debug { "Copying #{src_clean}/ to #{dest_clean}/ with rsync -avz --delete" } + result = Rsync.run(File.join(src_clean, "/"), File.join(dest_clean, "/"), ['-avz', '--delete']) + if result.success? + debug { "Rsync from #{src_clean}/ to #{dest_clean}/ successfull" } + else + msg = "Failed to rsync from #{src_clean}/ to #{dest_clean}/: " + result.error + raise Error, msg + end else begin FileUtils.cp_r(src, dest, :preserve => true) rescue Errno::ENOENT, Errno::EACCES debug { "Failed to copy from #{src} to #{dest} preserving file types, trying again without preserving them" }