diff options
| author | Tsukasa OMOTO | 2014-04-24 11:26:45 +0900 | 
|---|---|---|
| committer | Jack Nagel | 2014-04-24 17:10:41 -0500 | 
| commit | e07584e3fbdc88327bafe23b9c40c904d0fff0a1 (patch) | |
| tree | 3b58f9aad7bcf43b4bf522f62c8fdca17271d4d3 /Library/Homebrew/cmd/tap.rb | |
| parent | 1ffa4d9984dd569781c35455327476f7abd2cea3 (diff) | |
| download | homebrew-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.rb | 27 | 
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')}"  | 
