--- /dev/null
+class Chef
+ class Provider
+ class RemoteDirectory
+ def action_create
+ super
+ Chef::Log.debug("Doing a remote recursive directory transfer for #{@new_resource}")
+
+ files_transferred = Set.new
+ files_to_transfer.each do |cookbook_file_relative_path|
+ create_cookbook_file(cookbook_file_relative_path)
+ files_transferred << ::File.dirname(::File.join(@new_resource.path, cookbook_file_relative_path))
+ files_transferred << ::File.join(@new_resource.path, cookbook_file_relative_path)
+ end
+ if @new_resource.purge
+ files_to_purge = Set.new(
+ Dir.glob(::File.join(@new_resource.path, '**', '*'), ::File::FNM_DOTMATCH).select do |name|
+ name !~ /(?:^|#{Regexp.escape(::File::SEPARATOR)})\.\.?$/
+ end
+ )
+ files_to_purge = files_to_purge - files_transferred
+ purge_unmanaged_files(files_to_purge)
+ end
+ end
+ end
+ end
+end