aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Library/Homebrew/extend/pathname.rb21
-rw-r--r--Library/Homebrew/install_renamed.rb6
2 files changed, 27 insertions, 0 deletions
diff --git a/Library/Homebrew/extend/pathname.rb b/Library/Homebrew/extend/pathname.rb
index fd5cf67f1..eb0bfefad 100644
--- a/Library/Homebrew/extend/pathname.rb
+++ b/Library/Homebrew/extend/pathname.rb
@@ -115,6 +115,27 @@ class Pathname
return dst
end
+ def cp_path_sub pattern, replacement
+ raise "#{self} does not exist" unless self.exist?
+
+ src = self.to_s
+ dst = src.sub(pattern, replacement)
+ raise "#{src} is the same file as #{dst}" if src == dst
+
+ dst_path = Pathname.new dst
+
+ if self.directory?
+ dst_path.mkpath
+ return
+ end
+
+ dst_path.dirname.mkpath
+
+ dst = yield(src, dst) if block_given?
+
+ FileUtils.cp(src, dst)
+ end
+
# extended to support common double extensions
alias extname_old extname
def extname(path=to_s)
diff --git a/Library/Homebrew/install_renamed.rb b/Library/Homebrew/install_renamed.rb
index e0a69beec..5f34eb674 100644
--- a/Library/Homebrew/install_renamed.rb
+++ b/Library/Homebrew/install_renamed.rb
@@ -6,6 +6,12 @@ module InstallRenamed
end
end
+ def cp_path_sub pattern, replacement
+ super do |src, dst|
+ append_default_if_different(src, dst)
+ end
+ end
+
private
def append_default_if_different src, dst