module FileTransaction
Constants
- VERSION
Public Class Methods
copy_files(directory, target)
click to toggle source
@internal
Copies all contents of a directory instead of the directory itself.
# File lib/file-transaction.rb, line 10 def self.copy_files(directory, target) if files_in(target).empty? FileUtils.cp_r(File.join(directory, "."), target) else relative_files_in(directory).each do |file| FileUtils.mkdir_p(File.join(target, file.dirname)) begin FileUtils.cp(File.join(directory, file), File.join(target, file)) rescue Errno::EACCES FileUtils.rm_rf(File.join(target, file)) FileUtils.cp(File.join(directory, file), File.join(target, file)) end end files_for_deletion = relative_files_in(target) - relative_files_in(directory) files_for_deletion.each do |file| FileUtils.rm(File.join(target, file)) end end end
files_in(directory)
click to toggle source
@internal
# File lib/file-transaction.rb, line 34 def self.files_in(directory) Dir.glob(File.join(directory, "**", "*"), File::FNM_DOTMATCH) .reject { |file| file.end_with?(".") || file.end_with?("..") || File.directory?(file) } end
relative_files_in(directory)
click to toggle source
# File lib/file-transaction.rb, line 39 def self.relative_files_in(directory) files_in(directory).map { |file| Pathname.new(file).relative_path_from(directory) } end