update: handle renames on update
This commit is contained in:
parent
7079a00aa7
commit
6b0927944a
@ -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
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user