From 19852bc47cd75170dea7651a041c44c9fd4c6d3f Mon Sep 17 00:00:00 2001 From: Mike McQuaid Date: Sat, 5 Oct 2013 20:29:02 +0100 Subject: Pathname: add cp_path_sub method. This method allows copying a file to a new location by performing a substitution on the pathname. --- Library/Homebrew/extend/pathname.rb | 21 +++++++++++++++++++++ Library/Homebrew/install_renamed.rb | 6 ++++++ 2 files changed, 27 insertions(+) (limited to 'Library') 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 -- cgit v1.2.3