@@ -746,7 +746,7 @@ def cp(src, dest, preserve: nil, noop: nil, verbose: nil)
746
746
# - <tt>dereference_root: false</tt> - if +src+ is a symbolic link,
747
747
# does not dereference it.
748
748
# - <tt>noop: true</tt> - does not copy files.
749
- # - <tt>preserve</tt> - preserves file times.
749
+ # - <tt>preserve: true </tt> - preserves file times.
750
750
# - <tt>remove_destination: true</tt> - removes +dest+ before copying files.
751
751
# - <tt>verbose: true</tt> - prints an equivalent command:
752
752
#
@@ -788,6 +788,7 @@ def cp_r(src, dest, preserve: nil, noop: nil, verbose: nil,
788
788
#
789
789
# If +src+ is a directory, recursively copies +src+ to +dest+:
790
790
#
791
+ # system('tree --charset=ascii src1')
791
792
# src1
792
793
# |-- dir0
793
794
# | |-- src0.txt
@@ -796,6 +797,7 @@ def cp_r(src, dest, preserve: nil, noop: nil, verbose: nil,
796
797
# |-- src2.txt
797
798
# `-- src3.txt
798
799
# FileUtils.copy_entry('src1', 'dest1')
800
+ # system('tree --charset=ascii dest1')
799
801
# dest1
800
802
# |-- dir0
801
803
# | |-- src0.txt
@@ -812,7 +814,7 @@ def cp_r(src, dest, preserve: nil, noop: nil, verbose: nil,
812
814
#
813
815
# - <tt>dereference_root: true</tt> - if +src+ is a symbolic link,
814
816
# follows the link.
815
- # - <tt>preserve</tt> - preserves file times.
817
+ # - <tt>preserve: true </tt> - preserves file times.
816
818
# - <tt>remove_destination: true</tt> - removes +dest+ before copying files.
817
819
#
818
820
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
831
833
end
832
834
module_function :copy_entry
833
835
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
834
841
#
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.
837
848
#
838
849
def copy_file ( src , dest , preserve = false , dereference = true )
839
850
ent = Entry_ . new ( src , nil , dereference )
@@ -842,25 +853,69 @@ def copy_file(src, dest, preserve = false, dereference = true)
842
853
end
843
854
module_function :copy_file
844
855
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].
849
858
#
850
859
def copy_stream ( src , dest )
851
860
IO . copy_stream ( src , dest )
852
861
end
853
862
module_function :copy_stream
854
863
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)
855
912
#
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:
858
914
#
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
861
917
#
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.
864
919
#
865
920
def mv ( src , dest , force : nil , noop : nil , verbose : nil , secure : nil )
866
921
fu_output_message "mv#{ force ? ' -f' : '' } #{ [ src , dest ] . flatten . join ' ' } " if verbose
0 commit comments