Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
66 changes: 52 additions & 14 deletions lib/fileutils.rb
Original file line number Diff line number Diff line change
Expand Up @@ -236,19 +236,35 @@ def mkdir(list, mode: nil, noop: nil, verbose: nil)
module_function :mkdir

#
# Creates a directory and all its parent directories.
# For example,
# Creates directories at the paths in the given +list+
# (an array of strings or a single string),
# also creating ancestor directories as needed;
# returns +list+.
#
# With no keyword arguments, creates a directory at each +path+ in +list+,
# along with any needed ancestor directories,
# by calling: <tt>Dir.mkdir(path, mode)</tt>;
# see {Dir.mkdir}[https://docs.ruby-lang.org/en/master/Dir.html#method-c-mkdir]:
#
# FileUtils.mkdir_p(%w[tmp0/tmp1 tmp2/tmp3]) # => ["tmp0/tmp1", "tmp2/tmp3"]
# FileUtils.mkdir_p('tmp4/tmp5') # => ["tmp4/tmp5"]
#
# Keyword arguments:
#
# - <tt>mode: <i>integer</i></tt> - also calls <tt>File.chmod(mode, path)</tt>;
# see {File.chmod}[https://docs.ruby-lang.org/en/master/File.html#method-c-chmod].
# - <tt>noop: true</tt> - does not create directories.
# - <tt>verbose: true</tt> - prints an equivalent command:
#
# FileUtils.mkdir_p '/usr/local/lib/ruby'
# FileUtils.mkdir_p(%w[tmp0 tmp1], verbose: true)
# FileUtils.mkdir_p(%w[tmp2 tmp3], mode: 0700, verbose: true)
#
# causes to make following directories, if they do not exist.
# Output:
#
# * /usr
# * /usr/local
# * /usr/local/lib
# * /usr/local/lib/ruby
# mkdir -p tmp0 tmp1
# mkdir -p -m 700 tmp2 tmp3
#
# You can pass several directories at a time in a list.
# Raises an exception if for any reason a directory cannot be created.
#
def mkdir_p(list, mode: nil, noop: nil, verbose: nil)
list = fu_list(list)
Expand Down Expand Up @@ -293,12 +309,34 @@ def fu_mkdir(path, mode) #:nodoc:
private_module_function :fu_mkdir

#
# Removes one or more directories.
# Removes directories at the paths in the given +list+
# (an array of strings or a single string);
# returns +list+.
#
# With no keyword arguments, removes the directory at each +path+ in +list+,
# by calling: <tt>Dir.rmdir(path)</tt>;
# see {Dir.rmdir}[https://docs.ruby-lang.org/en/master/Dir.html#method-c-rmdir]:
#
# FileUtils.rmdir(%w[tmp0/tmp1 tmp2/tmp3]) # => ["tmp0/tmp1", "tmp2/tmp3"]
# FileUtils.rmdir('tmp4/tmp5') # => ["tmp4/tmp5"]
#
# Keyword arguments:
#
# - <tt>parents: true</tt> - removes successive ancestor directories
# if empty.
# - <tt>noop: true</tt> - does not remove directories.
# - <tt>verbose: true</tt> - prints an equivalent command:
#
# FileUtils.rmdir(%w[tmp0/tmp1 tmp2/tmp3], parents: true, verbose: true)
# FileUtils.rmdir('tmp4/tmp5', parents: true, verbose: true)
#
# Output:
#
# rmdir -p tmp0/tmp1 tmp2/tmp3
# rmdir -p tmp4/tmp5
#
# FileUtils.rmdir 'somedir'
# FileUtils.rmdir %w(somedir anydir otherdir)
# # Does not really remove directory; outputs message.
# FileUtils.rmdir 'somedir', verbose: true, noop: true
# Raises an exception if a directory does not exist
# or if for any reason a directory cannot be removed.
#
def rmdir(list, parents: nil, noop: nil, verbose: nil)
list = fu_list(list)
Expand Down