X-Git-Url: https://git.openstreetmap.org/chef.git/blobdiff_plain/3b5a6405d3dd3483fa8d77fa4924138c6287d10b..98cce464a451dba30327b140964b0eafbcb9b16a:/cookbooks/accounts/libraries/remote_directory.rb diff --git a/cookbooks/accounts/libraries/remote_directory.rb b/cookbooks/accounts/libraries/remote_directory.rb new file mode 100644 index 000000000..97adee117 --- /dev/null +++ b/cookbooks/accounts/libraries/remote_directory.rb @@ -0,0 +1,26 @@ +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