summaryrefslogtreecommitdiff
path: root/lib/fileutils.rb
diff options
context:
space:
mode:
authorNobuyoshi Nakada <[email protected]>2022-11-25 10:03:51 +0900
committergit <[email protected]>2022-11-25 01:03:57 +0000
commitc6330cd32b7d02b4603080a2c53d64be9e05773c ()
treeb75deec779274891f9ae99015a1dfc8bf71b0214 /lib/fileutils.rb
parent1a47521c4459fd61384c51ee58bc422ec69310d6 (diff)
[ruby/fileutils] [Feature #18925] Add `ln_sr` method and `relative:` option to `ln_s`
https://.com/ruby/fileutils/commit/5116088d5c
-rw-r--r--lib/fileutils.rb105
1 files changed, 101 insertions, 4 deletions
@@ -36,6 +36,7 @@ end
# - ::ln, ::link: Creates hard links.
# - ::ln_s, ::symlink: Creates symbolic links.
# - ::ln_sf: Creates symbolic links, overwriting if necessary.
#
# === Deleting
#
@@ -690,6 +691,7 @@ module FileUtils
# Keyword arguments:
#
# - <tt>force: true</tt> - overwrites +dest+ if it exists.
# - <tt>noop: true</tt> - does not create links.
# - <tt>verbose: true</tt> - prints an equivalent command:
#
@@ -709,7 +711,10 @@ module FileUtils
#
# Related: FileUtils.ln_sf.
#
- def ln_s(src, dest, force: nil, noop: nil, verbose: nil)
fu_output_message "ln -s#{force ? 'f' : ''} #{[src,dest].flatten.join ' '}" if verbose
return if noop
fu_each_src_dest0(src, dest) do |s,d|
@@ -729,6 +734,48 @@ module FileUtils
end
module_function :ln_sf
# Creates {hard links}[https://en.wikipedia.org/wiki/Hard_link]; returns +nil+.
#
# Arguments +src+ and +dest+
@@ -2436,15 +2483,15 @@ module FileUtils
end
private_module_function :fu_each_src_dest
- def fu_each_src_dest0(src, dest) #:nodoc:
if tmp = Array.try_convert(src)
tmp.each do |s|
s = File.path(s)
- yield s, File.join(dest, File.basename(s))
end
else
src = File.path(src)
- if File.directory?(dest)
yield src, File.join(dest, File.basename(src))
else
yield src, File.path(dest)
@@ -2468,6 +2515,56 @@ module FileUtils
end
private_module_function :fu_output_message
# This hash table holds command options.
OPT_TABLE = {} #:nodoc:
(private_instance_methods & methods(false)).inject(OPT_TABLE) {|tbl, name|