@@ -746,7 +746,7 @@ def cp(src, dest, preserve: nil, noop: nil, verbose: nil)
746746 # - <tt>dereference_root: false</tt> - if +src+ is a symbolic link,
747747 # does not dereference it.
748748 # - <tt>noop: true</tt> - does not copy files.
749- # - <tt>preserve</tt> - preserves file times.
749+ # - <tt>preserve: true </tt> - preserves file times.
750750 # - <tt>remove_destination: true</tt> - removes +dest+ before copying files.
751751 # - <tt>verbose: true</tt> - prints an equivalent command:
752752 #
@@ -788,6 +788,7 @@ def cp_r(src, dest, preserve: nil, noop: nil, verbose: nil,
788788 #
789789 # If +src+ is a directory, recursively copies +src+ to +dest+:
790790 #
791+ # system('tree --charset=ascii src1')
791792 # src1
792793 # |-- dir0
793794 # | |-- src0.txt
@@ -796,6 +797,7 @@ def cp_r(src, dest, preserve: nil, noop: nil, verbose: nil,
796797 # |-- src2.txt
797798 # `-- src3.txt
798799 # FileUtils.copy_entry('src1', 'dest1')
800+ # system('tree --charset=ascii dest1')
799801 # dest1
800802 # |-- dir0
801803 # | |-- src0.txt
@@ -812,7 +814,7 @@ def cp_r(src, dest, preserve: nil, noop: nil, verbose: nil,
812814 #
813815 # - <tt>dereference_root: true</tt> - if +src+ is a symbolic link,
814816 # follows the link.
815- # - <tt>preserve</tt> - preserves file times.
817+ # - <tt>preserve: true </tt> - preserves file times.
816818 # - <tt>remove_destination: true</tt> - removes +dest+ before copying files.
817819 #
818820 def copy_entry ( src , dest , preserve = false , dereference_root = false , remove_destination = false )
@@ -831,9 +833,18 @@ def copy_entry(src, dest, preserve = false, dereference_root = false, remove_des
831833 end
832834 module_function :copy_entry
833835
836+ # Copies file from +src+ to +dest+, which should not be directories:
837+ #
838+ # FileUtils.touch('src0.txt')
839+ # FileUtils.copy_file('src0.txt', 'dest0.txt')
840+ # File.file?('dest0.txt') # => true
834841 #
835- # Copies file contents of +src+ to +dest+.
836- # Both of +src+ and +dest+ must be a path name.
842+ # Keyword arguments:
843+ #
844+ # - <tt>dereference: false</tt> - if +src+ is a symbolic link,
845+ # does not follow the link.
846+ # - <tt>preserve: true</tt> - preserves file times.
847+ # - <tt>remove_destination: true</tt> - removes +dest+ before copying files.
837848 #
838849 def copy_file ( src , dest , preserve = false , dereference = true )
839850 ent = Entry_ . new ( src , nil , dereference )
@@ -842,25 +853,69 @@ def copy_file(src, dest, preserve = false, dereference = true)
842853 end
843854 module_function :copy_file
844855
845- #
846- # Copies stream +src+ to +dest+.
847- # +src+ must respond to #read(n) and
848- # +dest+ must respond to #write(str).
856+ # Copies \IO stream +src+ to \IO stream +dest+ via
857+ # {IO.copy_stream}[https://docs.ruby-lang.org/en/master/IO.html#method-c-copy_stream].
849858 #
850859 def copy_stream ( src , dest )
851860 IO . copy_stream ( src , dest )
852861 end
853862 module_function :copy_stream
854863
864+ # Moves files from +src+ to +dest+.
865+ # If +src+ and +dest+ are on different devices,
866+ # first copies, then removes +src+.
867+ #
868+ # If +src+ is the path to a single file or directory and +dest+ does not exist,
869+ # moves +src+ to +dest+:
870+ #
871+ # system('tree --charset=ascii src0')
872+ # src0
873+ # |-- src0.txt
874+ # `-- src1.txt
875+ # File.exist?('dest0') # => false
876+ # FileUtils.mv('src0', 'dest0')
877+ # File.exist?('src0') # => false
878+ # system('tree --charset=ascii dest0')
879+ # dest0
880+ # |-- src0.txt
881+ # `-- src1.txt
882+ #
883+ # If +src+ is an array of paths to files and directories
884+ # and +dest+ is the path to a directory,
885+ # copies from each path in the array to +dest+:
886+ #
887+ # File.file?('src1.txt') # => true
888+ # system('tree --charset=ascii src1')
889+ # src1
890+ # |-- src.dat
891+ # `-- src.txt
892+ # Dir.empty?('dest1') # => true
893+ # FileUtils.mv(['src1.txt', 'src1'], 'dest1')
894+ # system('tree --charset=ascii dest1')
895+ # dest1
896+ # |-- src1
897+ # | |-- src.dat
898+ # | `-- src.txt
899+ # `-- src1.txt
900+ #
901+ # - <tt>force: true</tt> - attempts to force the move;
902+ # if the move includes removing +src+
903+ # (that is, if +src+ and +dest+ are on different devices),
904+ # ignores raised exceptions of StandardError and its descendants.
905+ # - <tt>noop: true</tt> - does not move files.
906+ # - <tt>secure: true</tt> - removes +src+ securely
907+ # by calling FileUtils.remove_entry_secure.
908+ # - <tt>verbose: true</tt> - prints an equivalent command:
909+ #
910+ # FileUtils.mv('src0', 'dest0', noop: true, verbose: true)
911+ # FileUtils.mv(['src1.txt', 'src1'], 'dest1', noop: true, verbose: true)
855912 #
856- # Moves file(s) +src+ to +dest+. If +file+ and +dest+ exist on the different
857- # disk partition, the file is copied then the original file is removed.
913+ # Output:
858914 #
859- # FileUtils. mv 'badname.rb', 'goodname.rb'
860- # FileUtils. mv 'stuff.rb', '/notexist/lib/ruby', force: true # no error
915+ # mv src0 dest0
916+ # mv src1.txt src1 dest1
861917 #
862- # FileUtils.mv %w(junk.txt dust.txt), '/home/foo/.trash/'
863- # FileUtils.mv Dir.glob('test*.rb'), 'test', noop: true, verbose: true
918+ # FileUtils.move is an alias for FileUtils.mv.
864919 #
865920 def mv ( src , dest , force : nil , noop : nil , verbose : nil , secure : nil )
866921 fu_output_message "mv#{ force ? ' -f' : '' } #{ [ src , dest ] . flatten . join ' ' } " if verbose
0 commit comments