update: handle renames on update

This commit is contained in:
Vlad Shablinsky 2015-08-09 15:09:33 +03:00 committed by Mike McQuaid
parent 7079a00aa7
commit 6b0927944a

View File

@ -1,5 +1,7 @@
require "cmd/tap" require "cmd/tap"
require "formula_versions" require "formula_versions"
require "migrator"
require "formulary"
module Homebrew module Homebrew
def update def update
@ -46,13 +48,47 @@ module Homebrew
# automatically tap any migrated formulae's new tap # automatically tap any migrated formulae's new tap
report.select_formula(:D).each do |f| report.select_formula(:D).each do |f|
next unless (HOMEBREW_CELLAR/f).exist? next unless (dir = HOMEBREW_CELLAR/f).exist?
migration = TAP_MIGRATIONS[f] migration = TAP_MIGRATIONS[f]
next unless migration next unless migration
tap_user, tap_repo = migration.split "/" tap_user, tap_repo = migration.split "/"
install_tap tap_user, tap_repo 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 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? if report.empty?
puts "Already up-to-date." puts "Already up-to-date."
else else
@ -112,7 +148,13 @@ module Homebrew
end end
def load_tap_migrations def load_tap_migrations
require "tap_migrations" load "tap_migrations"
rescue LoadError
false
end
def load_formula_renames
load "formula_renames.rb"
rescue LoadError rescue LoadError
false false
end end