formula: simplify outdated_versions logic

This commit is contained in:
Vlad Shablinsky 2016-06-27 13:08:19 +03:00 committed by Xu Cheng
parent d47df68cbd
commit 9c15174e3c
No known key found for this signature in database
GPG Key ID: C2A3860FA0B459CE

View File

@ -956,33 +956,25 @@ class Formula
@oldname_lock.unlock unless @oldname_lock.nil? @oldname_lock.unlock unless @oldname_lock.nil?
end end
def migration_needed?
oldname && !rack.exist? && (dir = HOMEBREW_CELLAR/oldname).directory? &&
!dir.subdirs.empty? && tap == Tab.for_keg(dir.subdirs.first).tap
end
# @private # @private
def outdated_versions def outdated_versions
@outdated_versions ||= begin @outdated_versions ||= begin
all_versions = [] all_versions = []
older_or_same_tap_versions = []
if oldname && !rack.exist? && (dir = HOMEBREW_CELLAR/oldname).directory? && raise Migrator::MigrationNeededError.new(self) if migration_needed?
!dir.subdirs.empty? && tap == Tab.for_keg(dir.subdirs.first).tap
raise Migrator::MigrationNeededError.new(self)
end
installed_kegs.each do |keg| installed_kegs.each do |keg|
version = keg.version version = keg.version
all_versions << version all_versions << version
older_version = pkg_version <= version return [] if pkg_version <= version
tab_tap = Tab.for_keg(keg).tap
if tab_tap.nil? || tab_tap == tap || older_version
older_or_same_tap_versions << version
end
end end
if older_or_same_tap_versions.all? { |v| pkg_version > v }
all_versions.sort! all_versions.sort!
else
[]
end
end end
end end