Skip to content

Commit 13b5af4

Browse files
committed
Add target_directory option to ln_relative / ln_dir_relative
As well as `FileUtils.ln_sr`.
1 parent 15761f0 commit 13b5af4

1 file changed

Lines changed: 14 additions & 6 deletions

File tree

‎tool/lib/path.rb‎

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -70,23 +70,31 @@ def ln_safe(src, dest, real_src)
7070
alias ln_dir_safe ln_safe
7171
alias ln_exe ln_safe
7272

73-
def ln_relative(src, dest, executable = false)
73+
def ln_relative(src, dest, executable = false, target_directory: true)
7474
return if File.identical?(src, dest)
75-
parent = File.dirname(dest)
76-
File.directory?(parent) or mkdir_p(parent)
75+
parent = ln_target_directory(dest, target_directory)
7776
if executable
7877
return (ln_exe(relative(src, parent), dest, src) if File.exist?(src))
7978
end
8079
clean_link(relative(src, parent), dest) {|s, d| ln_safe(s, d, src)}
8180
end
8281

83-
def ln_dir_relative(src, dest)
82+
def ln_dir_relative(src, dest, target_directory: true)
8483
return if File.identical?(src, dest)
85-
parent = File.dirname(dest)
86-
File.directory?(parent) or mkdir_p(parent)
84+
parent = ln_target_directory(dest, target_directory)
8785
clean_link(relative(src, parent), dest) {|s, d| ln_dir_safe(s, d, src)}
8886
end
8987

88+
private def ln_target_directory(dest, target_directory)
89+
if target_directory
90+
dest
91+
else
92+
parent = File.dirname(dest)
93+
File.directory?(parent) or mkdir_p(parent)
94+
parent
95+
end
96+
end
97+
9098
case (CROSS_COMPILING || RUBY_PLATFORM)
9199
when /linux|darwin|solaris/
92100
prepend HardlinkExcutable

0 commit comments

Comments
 (0)