diff options
| author | Vlad Shablinsky | 2015-08-09 15:09:33 +0300 |
|---|---|---|
| committer | Mike McQuaid | 2015-08-10 13:57:59 +0100 |
| commit | 6b0927944aca1b11eec90659b11390a1575c7ff1 (patch) | |
| tree | c47aac9c20268ebe0be88aa8d065f66dcd1f4fbc /Library | |
| parent | 7079a00aa757f9f3659eb9b883e5e902860fa94d (diff) | |
| download | brew-6b0927944aca1b11eec90659b11390a1575c7ff1.tar.bz2 | |
update: handle renames on update
Diffstat (limited to 'Library')
| -rw-r--r-- | Library/Homebrew/cmd/update.rb | 46 |
1 files changed, 44 insertions, 2 deletions
diff --git a/Library/Homebrew/cmd/update.rb b/Library/Homebrew/cmd/update.rb index 1186f0e1b..17dbf3a19 100644 --- a/Library/Homebrew/cmd/update.rb +++ b/Library/Homebrew/cmd/update.rb @@ -1,5 +1,7 @@ require "cmd/tap" require "formula_versions" +require "migrator" +require "formulary" module Homebrew def update @@ -46,13 +48,47 @@ module Homebrew # automatically tap any migrated formulae's new tap report.select_formula(:D).each do |f| - next unless (HOMEBREW_CELLAR/f).exist? + 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 + # update tap for each Tab + tabs = dir.subdirs.each.map { |d| Tab.for_keg(Keg.new(d)) } + tabs.each { |tab| tab.source["tap"] = "#{tap_user}/homebrew-#{tap_repo}" } + tabs.each(&:write) end if load_tap_migrations + # Migrate installed renamed formulae from main Homebrew repository. + if load_formula_renames + report.select_formula(:D).each do |oldname| + newname = FORMULA_RENAMES[oldname] + next unless newname + next unless (dir = HOMEBREW_CELLAR/oldname).directory? && !dir.subdirs.empty? + + begin + migrator = Migrator.new(Formulary.factory("homebrew/homebrew/#{newname}")) + migrator.migrate + rescue Migrator::MigratorDifferentTapsError + end + end + end + + # Migrate installed renamed formulae from taps + report.select_formula(:D).each do |oldname| + user, repo, oldname = oldname.split("/", 3) + next unless user && repo && oldname + tap = Tap.new(user, repo) + next unless newname = tap.formula_renames[oldname] + next unless (dir = HOMEBREW_CELLAR/oldname).directory? && !dir.subdirs.empty? + + begin + migrator = Migrator.new(Formulary.factory("#{user}/#{repo}/#{newname}")) + migrator.migrate + rescue Migrator::MigratorDifferentTapsError + end + end + if report.empty? puts "Already up-to-date." else @@ -112,7 +148,13 @@ module Homebrew end def load_tap_migrations - require "tap_migrations" + load "tap_migrations" + rescue LoadError + false + end + + def load_formula_renames + load "formula_renames.rb" rescue LoadError false end |
