diff --git a/Library/Homebrew/cmd/install.rb b/Library/Homebrew/cmd/install.rb index ac1b37b728..755d944dc5 100644 --- a/Library/Homebrew/cmd/install.rb +++ b/Library/Homebrew/cmd/install.rb @@ -16,7 +16,10 @@ module Homebrew ARGV.named.each do |name| if !File.exist?(name) && (name !~ HOMEBREW_CORE_FORMULA_REGEX) \ && (name =~ HOMEBREW_TAP_FORMULA_REGEX || name =~ HOMEBREW_CASK_TAP_FORMULA_REGEX) - install_tap $1, $2 + user = $1 + repo = $2.sub(/^homebrew-/, "") + tap = Tap.fetch(user, repo) + tap.install end end unless ARGV.force? diff --git a/Library/Homebrew/cmd/update.rb b/Library/Homebrew/cmd/update.rb index 45c83b0409..70d3812504 100644 --- a/Library/Homebrew/cmd/update.rb +++ b/Library/Homebrew/cmd/update.rb @@ -82,12 +82,12 @@ module Homebrew next unless (dir = HOMEBREW_CELLAR/f).exist? migration = TAP_MIGRATIONS[f] next unless migration - tap_user, tap_repo = migration.split "/" - install_tap tap_user, tap_repo + tap = Tap.fetch(*migration.split("/")) + tap.install # update tap for each Tab tabs = dir.subdirs.map { |d| Tab.for_keg(Keg.new(d)) } next if tabs.first.source["tap"] != "Homebrew/homebrew" - tabs.each { |tab| tab.source["tap"] = "#{tap_user}/homebrew-#{tap_repo}" } + tabs.each { |tab| tab.source["tap"] = "#{tap.user}/homebrew-#{tap.repo}" } tabs.each(&:write) end if load_tap_migrations diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb index 9946d4ad44..c25f442955 100644 --- a/Library/Homebrew/formula_installer.rb +++ b/Library/Homebrew/formula_installer.rb @@ -8,7 +8,6 @@ require "caveats" require "cleaner" require "formula_cellar_checks" require "install_renamed" -require "cmd/tap" require "cmd/postinstall" require "hooks/bottles" require "debrew" @@ -115,10 +114,11 @@ class FormulaInstaller begin formula.recursive_dependencies.map(&:to_formula) rescue TapFormulaUnavailableError => e - if Homebrew.install_tap(e.user, e.repo) - retry - else + if e.tap.installed? raise + else + e.tap.install + retry end end rescue FormulaUnavailableError => e