Pathname: add cp_path_sub method.

This method allows copying a file to a new location by performing a
substitution on the pathname.
This commit is contained in:
Mike McQuaid 2013-10-05 20:29:02 +01:00
parent caa2f87728
commit 19852bc47c
2 changed files with 27 additions and 0 deletions

View File

@ -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)

View File

@ -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