Module: FileTransaction
- Defined in:
- lib/file-transaction.rb,
lib/file-transaction/version.rb
Constant Summary collapse
- VERSION =
"1.0.0"
Class Method Summary collapse
-
.copy_files(directory, target) ⇒ Object
Copies all contents of a directory instead of the directory itself.
- .files_in(directory) ⇒ Object
- .relative_files_in(directory) ⇒ Object
Class Method Details
.copy_files(directory, target) ⇒ Object
Copies all contents of a directory instead of the directory itself.
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# 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) ⇒ Object
34 35 36 37 |
# 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) ⇒ Object
39 40 41 |
# 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 |