diff options
| -rw-r--r-- | Library/Homebrew/extend/pathname.rb | 21 | ||||
| -rw-r--r-- | Library/Homebrew/install_renamed.rb | 6 |
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 |
