diff options
| author | Peter Aronoff | 2013-03-12 12:32:49 +0000 |
|---|---|---|
| committer | Mike McQuaid | 2013-03-12 12:32:49 +0000 |
| commit | 3381142bc7ee5e978494d7b89355e6f145b927a5 (patch) | |
| tree | 7d267251bc3a4dd6662c6719cb66e259b99db337 /Library | |
| parent | 79a67fd097f7e998ed29bad9c98174a82fec4da6 (diff) | |
| download | brew-3381142bc7ee5e978494d7b89355e6f145b927a5.tar.bz2 | |
Update `brew tap` to work without 'homebrew-'
Currently `brew tap` only works on repos with 'homebrew-' in their name.
This version tries the repo name as is and then falls back to try
'homebrew-repo' only if that fails.
I've also tweaked the regex in tap_args to allow '-' in repo names. The
previous regex required a match on \w. This made it impossible for people
to tap repos with names like 'username/why-not'.
Closes Homebrew/homebrew#18366.
Signed-off-by: Mike McQuaid <mike@mikemcquaid.com>
Diffstat (limited to 'Library')
| -rw-r--r-- | Library/Homebrew/cmd/tap.rb | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/Library/Homebrew/cmd/tap.rb b/Library/Homebrew/cmd/tap.rb index 5bd37548f..a091da055 100644 --- a/Library/Homebrew/cmd/tap.rb +++ b/Library/Homebrew/cmd/tap.rb @@ -24,7 +24,21 @@ module Homebrew extend self # 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/#{repouser}/homebrew-#{repo} #{tapd}" + # First try tapping the repo name as is. If that fails, fall back to + # 'homebrew-repo'. + stdout = `git clone https://github.com/#{repouser}/#{repo} #{tapd} 2>/dev/null` + unless $?.success? + stdout = `git clone https://github.com/#{repouser}/homebrew-#{repo} #{tapd} 2>&1` + if $?.success? + repo = "homebrew-" + repo + else + abort <<-EOS.undent + Neither #{repouser}/#{repo} nor #{repouser}/homebrew-#{repo} tapped. + Please check the tap name and try again. + EOS + end + end + puts stdout files = [] tapd.find_formula{ |file| files << tapd.basename.join(file) } @@ -34,7 +48,7 @@ module Homebrew extend self # Figure out if this repo is private # curl will throw an exception if the repo is private (Github returns a 404) begin - curl('-Ifso', '/dev/null', "https://api.github.com/repos/#{repouser}/homebrew-#{repo}") + curl('-Ifso', '/dev/null', "https://api.github.com/repos/#{repouser}/#{repo}") rescue puts puts "It looks like you tapped a private repository" @@ -43,7 +57,7 @@ module Homebrew extend self puts "following command:" puts puts " cd #{tapd}" - puts " git remote set-url origin git@github.com:#{repouser}/homebrew-#{repo}.git" + puts " git remote set-url origin git@github.com:#{repouser}/#{repo}.git" puts end end @@ -102,7 +116,7 @@ module Homebrew extend self private def tap_args - ARGV.first =~ %r{^(\S+)/(homebrew-)?(\w+)$} + ARGV.first =~ %r{^(\S+)/(homebrew-)?([-\w]+)$} raise "Invalid usage" unless $1 and $3 [$1, $3] end |
