From 5d1f4dd531f9e88c762f2f65e73e67511798c62d Mon Sep 17 00:00:00 2001 From: Mike McQuaid Date: Wed, 29 Mar 2017 11:19:25 +0100 Subject: [PATCH] migrator: add more helper methods. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add methods to determine if a migration is needed and perform it if so (and no-op if not). Additionally, make `ARGV.force?` get passed as a parameter so it can be overridden without requiring users to pass `—force`. --- Library/Homebrew/migrator.rb | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/Library/Homebrew/migrator.rb b/Library/Homebrew/migrator.rb index a58ca2059b..44614d553e 100644 --- a/Library/Homebrew/migrator.rb +++ b/Library/Homebrew/migrator.rb @@ -83,7 +83,26 @@ class Migrator # path to newname keg that will be linked if old_linked_keg isn't nil attr_reader :new_linked_keg_record - def initialize(formula) + def self.needs_migration?(formula) + oldname = formula.oldname + return false unless oldname + oldname_rack = HOMEBREW_CELLAR/oldname + return false if oldname_rack.symlink? + return false unless oldname_rack.directory? + true + end + + def self.migrate_if_needed(formula) + return unless Migrator.needs_migration?(formula) + begin + migrator = Migrator.new(formula, force: true) + migrator.migrate + rescue Exception => e + onoe e + end + end + + def initialize(formula, force: ARGV.force?) @oldname = formula.oldname @newname = formula.name raise MigratorNoOldnameError, formula unless oldname @@ -95,7 +114,7 @@ class Migrator @old_tabs = old_cellar.subdirs.map { |d| Tab.for_keg(Keg.new(d)) } @old_tap = old_tabs.first.tap - if !ARGV.force? && !from_same_taps? + if !force && !from_same_taps? raise MigratorDifferentTapsError.new(formula, old_tap) end