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>
This commit is contained in:
Peter Aronoff 2013-03-12 12:32:49 +00:00 committed by Mike McQuaid
parent 79a67fd097
commit 3381142bc7

View File

@ -24,7 +24,21 @@ module Homebrew extend self
# we downcase to avoid case-insensitive filesystem issues # we downcase to avoid case-insensitive filesystem issues
tapd = HOMEBREW_LIBRARY/"Taps/#{user.downcase}-#{repo.downcase}" tapd = HOMEBREW_LIBRARY/"Taps/#{user.downcase}-#{repo.downcase}"
raise "Already tapped!" if tapd.directory? 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 = [] files = []
tapd.find_formula{ |file| files << tapd.basename.join(file) } tapd.find_formula{ |file| files << tapd.basename.join(file) }
@ -34,7 +48,7 @@ module Homebrew extend self
# Figure out if this repo is private # Figure out if this repo is private
# curl will throw an exception if the repo is private (Github returns a 404) # curl will throw an exception if the repo is private (Github returns a 404)
begin 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 rescue
puts puts
puts "It looks like you tapped a private repository" puts "It looks like you tapped a private repository"
@ -43,7 +57,7 @@ module Homebrew extend self
puts "following command:" puts "following command:"
puts puts
puts " cd #{tapd}" 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 puts
end end
end end
@ -102,7 +116,7 @@ module Homebrew extend self
private private
def tap_args def tap_args
ARGV.first =~ %r{^(\S+)/(homebrew-)?(\w+)$} ARGV.first =~ %r{^(\S+)/(homebrew-)?([-\w]+)$}
raise "Invalid usage" unless $1 and $3 raise "Invalid usage" unless $1 and $3
[$1, $3] [$1, $3]
end end