aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/cmd/tap.rb
diff options
context:
space:
mode:
authorTsukasa OMOTO2014-04-24 11:26:45 +0900
committerJack Nagel2014-04-24 17:10:41 -0500
commite07584e3fbdc88327bafe23b9c40c904d0fff0a1 (patch)
tree3b58f9aad7bcf43b4bf522f62c8fdca17271d4d3 /Library/Homebrew/cmd/tap.rb
parent1ffa4d9984dd569781c35455327476f7abd2cea3 (diff)
downloadhomebrew-e07584e3fbdc88327bafe23b9c40c904d0fff0a1.tar.bz2
Make the on-disk representation of taps unambiguous
This commit supports "-" and "_" in names of user and repository. Closes #28203. Signed-off-by: Jack Nagel <jacknagel@gmail.com>
Diffstat (limited to 'Library/Homebrew/cmd/tap.rb')
-rw-r--r--Library/Homebrew/cmd/tap.rb27
1 files changed, 16 insertions, 11 deletions
diff --git a/Library/Homebrew/cmd/tap.rb b/Library/Homebrew/cmd/tap.rb
index 4b00c21b6..f2815a960 100644
--- a/Library/Homebrew/cmd/tap.rb
+++ b/Library/Homebrew/cmd/tap.rb
@@ -3,9 +3,11 @@ module Homebrew extend self
def tap
if ARGV.empty?
tapd = HOMEBREW_LIBRARY/"Taps"
- tapd.children.each do |tap|
- # only replace the *last* dash: yes, tap filenames suck
- puts tap.basename.to_s.reverse.sub('-', '/').reverse if (tap/'.git').directory?
+ tapd.children.each do |user|
+ next unless user.directory?
+ user.children.each do |repo|
+ puts "#{user.basename}/#{repo.basename.sub("homebrew-", "")}" if (repo/".git").directory?
+ end
end if tapd.directory?
elsif ARGV.first == "--repair"
repair_taps
@@ -22,12 +24,12 @@ module Homebrew extend self
user = "homebrew" if user == "Homebrew"
# we downcase to avoid case-insensitive filesystem issues
- tapd = HOMEBREW_LIBRARY/"Taps/#{user.downcase}-#{repo.downcase}"
+ tapd = HOMEBREW_LIBRARY/"Taps/#{user.downcase}/homebrew-#{repo.downcase}"
return false if tapd.directory?
abort unless system "git clone https://github.com/#{repouser}/homebrew-#{repo} #{tapd}"
files = []
- tapd.find_formula{ |file| files << tapd.basename.join(file) }
+ tapd.find_formula{ |file| files << tapd.dirname.basename.join(tapd.basename, file) }
link_tap_formula(files)
puts "Tapped #{files.length} formula"
@@ -88,10 +90,13 @@ module Homebrew extend self
count = 0
# check symlinks are all set in each tap
- HOMEBREW_REPOSITORY.join("Library/Taps").children.each do |tap|
- files = []
- tap.find_formula{ |file| files << tap.basename.join(file) } if tap.directory?
- count += link_tap_formula(files)
+ HOMEBREW_REPOSITORY.join("Library/Taps").children.each do |user|
+ next unless user.directory?
+ user.children.each do |repo|
+ files = []
+ repo.find_formula{ |file| files << user.basename.join(repo.basename, file) } if repo.directory?
+ count += link_tap_formula(files)
+ end
end
puts "Tapped #{count} formula"
@@ -100,7 +105,7 @@ module Homebrew extend self
private
def tap_args
- ARGV.first =~ %r{^(\S+)/(homebrew-)?(\w+)$}
+ ARGV.first =~ %r{^([\w_-]+)/(homebrew-)?([\w_-]+)$}
raise "Invalid tap name" unless $1 && $3
[$1, $3]
end
@@ -118,7 +123,7 @@ end
class Pathname
def tap_ref
case self.to_s
- when %r{^#{HOMEBREW_LIBRARY}/Taps/([a-z\-_]+)-(\w+)/(.+)}
+ when %r{^#{HOMEBREW_LIBRARY}/Taps/([\w_-]+)/([\w_-]+)/(.+)}
"#$1/#$2/#{File.basename($3, '.rb')}"
when %r{^#{HOMEBREW_LIBRARY}/Formula/(.+)}
"Homebrew/homebrew/#{File.basename($1, '.rb')}"