From 58cb4444da8f20e4e51800af253dedeadefc0edf Mon Sep 17 00:00:00 2001 From: Mike McQuaid Date: Mon, 25 Aug 2014 10:28:40 +0100 Subject: [PATCH] etc.install: handle recursive directory installs. We need to install the helper module not just on `etc` but also on all subdirectories of it too. Also, handle the case where we install a subdirectory with etc.install. Closes Homebrew/homebrew#26145. --- Library/Homebrew/extend/pathname.rb | 1 + Library/Homebrew/install_renamed.rb | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/Library/Homebrew/extend/pathname.rb b/Library/Homebrew/extend/pathname.rb index 8ecff6bf40..ca1d167c12 100644 --- a/Library/Homebrew/extend/pathname.rb +++ b/Library/Homebrew/extend/pathname.rb @@ -48,6 +48,7 @@ class Pathname dst = dst.to_s dst = yield(src, dst) if block_given? + return unless dst mkpath diff --git a/Library/Homebrew/install_renamed.rb b/Library/Homebrew/install_renamed.rb index 42d0fee8f8..02a6e9b101 100644 --- a/Library/Homebrew/install_renamed.rb +++ b/Library/Homebrew/install_renamed.rb @@ -2,6 +2,12 @@ module InstallRenamed def install_p src, new_basename = nil super do |src, dst| dst += "/#{File.basename(src)}" if File.directory? dst + + if File.directory? src + Pathname.new(dst).install Dir["#{src}/*"] + next + end + append_default_if_different(src, dst) end end @@ -12,6 +18,14 @@ module InstallRenamed end end + def + path + super(path).extend(InstallRenamed) + end + + def / path + super(path).extend(InstallRenamed) + end + private def append_default_if_different src, dst