diff options
| -rw-r--r-- | Library/Homebrew/cmd/tap.rb | 21 | ||||
| -rw-r--r-- | Library/Homebrew/cmd/untap.rb | 13 | ||||
| -rw-r--r-- | Library/Homebrew/cmd/update.rb | 25 | ||||
| -rw-r--r-- | Library/Homebrew/test/test_updater.rb | 6 | 
4 files changed, 31 insertions, 34 deletions
diff --git a/Library/Homebrew/cmd/tap.rb b/Library/Homebrew/cmd/tap.rb index 85028f813..0c15b4ac5 100644 --- a/Library/Homebrew/cmd/tap.rb +++ b/Library/Homebrew/cmd/tap.rb @@ -25,7 +25,7 @@ module Homebrew extend self      abort unless system "git clone https://github.com/#{repouser}/homebrew-#{repo} #{tapd}"      files = [] -    tapd.find_formula{ |file| files << tapd.dirname.basename.join(tapd.basename, file) } +    tapd.find_formula { |file| files << tapd.join(file) }      link_tap_formula(files)      puts "Tapped #{files.length} formula" @@ -42,24 +42,23 @@ module Homebrew extend self      true    end -  def link_tap_formula formulae +  def link_tap_formula paths      ignores = (HOMEBREW_LIBRARY/"Formula/.gitignore").read.split rescue []      tapped = 0 -    formulae.each do |formula| -      from = HOMEBREW_LIBRARY.join("Taps/#{formula}") -      to = HOMEBREW_LIBRARY.join("Formula/#{formula.basename}") +    paths.each do |path| +      to = HOMEBREW_LIBRARY.join("Formula", path.basename)        # Unexpected, but possible, lets proceed as if nothing happened -      to.delete if to.symlink? and to.realpath == from +      to.delete if to.symlink? && to.resolved_path == path        begin -        to.make_relative_symlink(from) +        to.make_relative_symlink(path)        rescue SystemCallError -        to = to.realpath if to.exist? -        opoo "Could not tap #{Tty.white}#{tap_ref(from)}#{Tty.reset} over #{Tty.white}#{tap_ref(to)}#{Tty.reset}" +        to = to.resolved_path if to.symlink? +        opoo "Could not tap #{Tty.white}#{tap_ref(path)}#{Tty.reset} over #{Tty.white}#{tap_ref(to)}#{Tty.reset}"        else -        ignores << formula.basename.to_s +        ignores << path.basename.to_s          tapped += 1        end      end @@ -86,7 +85,7 @@ module Homebrew extend self      # check symlinks are all set in each tap      each_tap do |user, repo|        files = [] -      repo.find_formula { |file| files << user.basename.join(repo.basename, file) } +      repo.find_formula { |file| files << repo.join(file) }        count += link_tap_formula(files)      end diff --git a/Library/Homebrew/cmd/untap.rb b/Library/Homebrew/cmd/untap.rb index e013b5ca6..bbb223238 100644 --- a/Library/Homebrew/cmd/untap.rb +++ b/Library/Homebrew/cmd/untap.rb @@ -18,24 +18,23 @@ module Homebrew extend self      raise "No such tap!" unless tapd.directory?      files = [] -    tapd.find_formula{ |file| files << Pathname.new("#{user}/homebrew-#{repo}").join(file) } +    tapd.find_formula { |file| files << tapd.join(file) }      unlink_tap_formula(files)      tapd.rmtree      tapd.dirname.rmdir_if_possible      puts "Untapped #{files.length} formula"    end -  def unlink_tap_formula formulae +  def unlink_tap_formula paths      untapped = 0      gitignores = (HOMEBREW_LIBRARY/"Formula/.gitignore").read.split rescue [] -    formulae.each do |formula| -      file = HOMEBREW_LIBRARY.join("Taps", formula) -      link = HOMEBREW_LIBRARY.join("Formula", formula.basename) +    paths.each do |path| +      link = HOMEBREW_LIBRARY.join("Formula", path.basename) -      if link.symlink? && (!link.exist? || link.resolved_path == file) +      if link.symlink? && (!link.exist? || link.resolved_path == path)          link.delete -        gitignores.delete(file.basename.to_s) +        gitignores.delete(path.basename.to_s)          untapped += 1        end      end diff --git a/Library/Homebrew/cmd/update.rb b/Library/Homebrew/cmd/update.rb index bd86bc8ba..f89207966 100644 --- a/Library/Homebrew/cmd/update.rb +++ b/Library/Homebrew/cmd/update.rb @@ -17,11 +17,10 @@ module Homebrew extend self      cd HOMEBREW_REPOSITORY      git_init_if_necessary -    taps = HOMEBREW_LIBRARY.join("Taps")      tapped_formulae = []      HOMEBREW_LIBRARY.join("Formula").children.each do |path|        next unless path.symlink? -      tapped_formulae << path.resolved_path.relative_path_from(taps) +      tapped_formulae << path.resolved_path      end      unlink_tap_formula(tapped_formulae) @@ -179,8 +178,7 @@ class Updater            when :R then $3            else $2            end -        path = Pathname.pwd.join(path).relative_path_from(HOMEBREW_REPOSITORY) -        map[status] << path.to_s +        map[status] << Pathname.pwd.join(path)        end      end @@ -219,12 +217,12 @@ class Report < Hash    end    def tapped_formula_for key -    fetch(key, []).map do |path| -      case path when %r{^Library/Taps/([\w_-]+/[\w_-]+/.*)} -        relative_path = $1 -        if valid_formula_location?(relative_path) -          Pathname.new(relative_path) -        end +    fetch(key, []).select do |path| +      case path.relative_path_from(HOMEBREW_REPOSITORY).to_s +      when %r{^Library/Taps/([\w_-]+/[\w_-]+/.*)} +        valid_formula_location?($1) +      else +        false        end      end.compact    end @@ -249,10 +247,11 @@ class Report < Hash    def select_formula key      fetch(key, []).map do |path| -      case path when %r{^Library/Formula} -        File.basename(path, ".rb") +      case path.relative_path_from(HOMEBREW_REPOSITORY).to_s +      when %r{^Library/Formula} +        path.basename(".rb").to_s        when %r{^Library/Taps/([\w_-]+)/(homebrew-)?([\w_-]+)/(.*)\.rb} -        "#$1/#$3/#{File.basename(path, '.rb')}" +        "#$1/#$3/#{path.basename(".rb")}"        end      end.compact.sort    end diff --git a/Library/Homebrew/test/test_updater.rb b/Library/Homebrew/test/test_updater.rb index 4b974e33f..a7e4f3b46 100644 --- a/Library/Homebrew/test/test_updater.rb +++ b/Library/Homebrew/test/test_updater.rb @@ -85,9 +85,9 @@ class UpdaterTests < Test::Unit::TestCase      perform_update(fixture('update_git_diff_output_with_tapped_formulae_changes'))      assert @updater.expectations_met?      assert_equal [ -      Pathname('someuser/sometap/Formula/antiword.rb'), -      Pathname('someuser/sometap/HomebrewFormula/lua.rb'), -      Pathname('someuser/sometap/custom-formula.rb'), +      HOMEBREW_LIBRARY.join("Taps", "someuser/sometap/Formula/antiword.rb"), +      HOMEBREW_LIBRARY.join("Taps", "someuser/sometap/HomebrewFormula/lua.rb"), +      HOMEBREW_LIBRARY.join("Taps", "someuser/sometap/custom-formula.rb"),      ], @report.tapped_formula_for(:A)    end  | 
