diff --git a/lib/fileutils.rb b/lib/fileutils.rb index dfc4f7f..38e4365 100644 --- a/lib/fileutils.rb +++ b/lib/fileutils.rb @@ -631,16 +631,53 @@ def link_entry(src, dest, dereference_root = false, remove_destination = false) end module_function :link_entry + # Copies files from +src+ to +dest+. # - # Copies a file content +src+ to +dest+. If +dest+ is a directory, - # copies +src+ to +dest/src+. + # If +src+ is the path to a file and +dest+ is not the path to a directory, + # copies +src+ to +dest+: # - # If +src+ is a list of files, then +dest+ must be a directory. + # FileUtils.touch('src0.txt') + # File.exist?('dest0.txt') # => false + # FileUtils.cp('src0.txt', 'dest0.txt') + # File.exist?('dest0.txt') # => true + # + # If +src+ is the path to a file and +dest+ is the path to a directory, + # copies +src+ to dest/src: + # + # FileUtils.touch('src1.txt') + # FileUtils.mkdir('dest1') + # FileUtils.cp('src1.txt', 'dest1') + # File.exist?('dest1/src1.txt') # => true + # + # If +src+ is an array of paths to files and +dest+ is the path to a directory, + # copies from each +src+ to +dest+: + # + # src_file_paths = ['src2.txt', 'src2.dat'] + # FileUtils.touch(src_file_paths) + # FileUtils.mkdir('dest2') + # FileUtils.cp(src_file_paths, 'dest2') + # File.exist?('dest2/src2.txt') # => true + # File.exist?('dest2/src2.dat') # => true + # + # Keyword arguments: + # + # - preserve: true - preserves file times. + # - noop: true - does not copy files. + # - verbose: true - prints an equivalent command: + # + # FileUtils.cp('src0.txt', 'dest0.txt', noop: true, verbose: true) + # FileUtils.cp('src1.txt', 'dest1', noop: true, verbose: true) + # FileUtils.cp(src_file_paths, 'dest2', noop: true, verbose: true) + # + # Output: + # + # cp src0.txt dest0.txt + # cp src1.txt dest1 + # cp src2.txt src2.dat dest2 + # + # Raises an exception if +src+ is a directory. # - # FileUtils.cp 'eval.c', 'eval.c.org' - # FileUtils.cp %w(cgi.rb complex.rb date.rb), '/usr/lib/ruby/1.6' - # FileUtils.cp %w(cgi.rb complex.rb date.rb), '/usr/lib/ruby/1.6', verbose: true - # FileUtils.cp 'symlink', 'dest' # copy content, "dest" is not a symlink + # FileUtils.copy is an alias for FileUtils.cp. # def cp(src, dest, preserve: nil, noop: nil, verbose: nil) fu_output_message "cp#{preserve ? ' -p' : ''} #{[src,dest].flatten.join ' '}" if verbose