diff --git a/Library/Homebrew/cmd/tap.rb b/Library/Homebrew/cmd/tap.rb index b728373206..16ed0a9a8c 100644 --- a/Library/Homebrew/cmd/tap.rb +++ b/Library/Homebrew/cmd/tap.rb @@ -14,12 +14,17 @@ module Homebrew extend self def install_tap user, repo raise "brew install git" unless system "/usr/bin/which -s git" - tapd = HOMEBREW_LIBRARY/"Taps/#{user}-#{repo}" + # we special case homebrew so users don't have to shift in a terminal + repouser = if user == "homebrew" then "Homebrew" else user end + user = "homebrew" if user == "Homebrew" + + # we downcase to avoid case-insensitive filesystem issues + tapd = HOMEBREW_LIBRARY/"Taps/#{user.downcase}-#{repo.downcase}" raise "Already tapped!" if tapd.directory? - abort unless system "git clone https://github.com/#{user}/homebrew-#{repo} #{tapd}" + abort unless system "git clone https://github.com/#{repouser}/homebrew-#{repo} #{tapd}" files = [] - tapd.find_formula{ |file| files << Pathname.new("#{user}-#{repo}").join(file) } + tapd.find_formula{ |file| files << tapd.basename.join(file) } tapped = link_tap_formula(files) puts "Tapped #{tapped} formula" end diff --git a/Library/Homebrew/cmd/untap.rb b/Library/Homebrew/cmd/untap.rb index 577a59a12a..e1529c2884 100644 --- a/Library/Homebrew/cmd/untap.rb +++ b/Library/Homebrew/cmd/untap.rb @@ -3,6 +3,14 @@ require 'cmd/tap' # for tap_args module Homebrew extend self def untap user, repo = tap_args + + # we consistently downcase in tap to ensure we are not bitten by case-insensive + # filesystem issues. Which is the default on mac. The problem being the + # filesystem cares, but our regexps don't. So unless we resolve *every* path + # we will get bitten. + user.downcase! + repo.downcase! + tapd = HOMEBREW_LIBRARY/"Taps/#{user}-#{repo}" raise "No such tap!" unless tapd.directory?