Skip to content

Commit d6d7e53

Browse files
[DOC] Enhanced RDoc (#77)
Treats: ::copy_entry ::copy_file ::copy_stream ::mv
1 parent 27a3c37 commit d6d7e53

File tree

1 file changed

+69
-14
lines changed

1 file changed

+69
-14
lines changed

lib/fileutils.rb

Lines changed: 69 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)