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:
parent
79a67fd097
commit
3381142bc7
@ -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
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user