tap: add #reverse_tap_migrations_renames to speed things up

This gets used by `Tap.reverse_tap_migrations_renames` and reduces
the amount of information that needs to be calculated on the fly
every time.
This commit is contained in:
apainintheneck 2024-03-06 21:00:43 -08:00
parent fb8c0d2b30
commit d4a273443c
3 changed files with 24 additions and 17 deletions

View File

@ -87,7 +87,7 @@ module Cask
sig { returns(T::Array[String]) } sig { returns(T::Array[String]) }
def old_tokens def old_tokens
@old_tokens ||= if (tap = self.tap) @old_tokens ||= if (tap = self.tap)
Tap.reverse_tap_migrations_renames.fetch("#{tap}/#{token}", []) + Tap.reverse_tap_migrations_renames(tap, token) +
tap.cask_reverse_renames.fetch(token, []) tap.cask_reverse_renames.fetch(token, [])
else else
[] []

View File

@ -552,7 +552,7 @@ class Formula
sig { returns(T::Array[String]) } sig { returns(T::Array[String]) }
def oldnames def oldnames
@oldnames ||= if (tap = self.tap) @oldnames ||= if (tap = self.tap)
Tap.reverse_tap_migrations_renames.fetch("#{tap}/#{name}", []) + Tap.reverse_tap_migrations_renames(tap, name) +
tap.formula_reverse_renames.fetch(name, []) tap.formula_reverse_renames.fetch(name, [])
else else
[] []

View File

@ -189,6 +189,7 @@ class Tap
@command_files = nil @command_files = nil
@tap_migrations = nil @tap_migrations = nil
@reverse_tap_migrations_renames = nil
@audit_exceptions = nil @audit_exceptions = nil
@style_exceptions = nil @style_exceptions = nil
@ -853,21 +854,6 @@ class Tap
end end
end end
sig { returns(T::Hash[String, T::Array[String]]) }
def self.reverse_tap_migrations_renames
Tap.each_with_object({}) do |tap, hash|
tap.tap_migrations.each do |old_name, new_name|
new_tap_user, new_tap_repo, new_name = new_name.split("/", 3)
next unless new_name
new_tap = Tap.fetch(T.must(new_tap_user), T.must(new_tap_repo))
hash["#{new_tap}/#{new_name}"] ||= []
hash["#{new_tap}/#{new_name}"] << old_name
end
end
end
# Hash with tap migrations. # Hash with tap migrations.
sig { returns(T::Hash[String, String]) } sig { returns(T::Hash[String, String]) }
def tap_migrations def tap_migrations
@ -878,6 +864,27 @@ class Tap
end end
end end
sig { returns(T::Hash[String, T::Array[String]]) }
def reverse_tap_migrations_renames
@reverse_tap_migrations_renames ||= tap_migrations.each_with_object({}) do |(old_name, new_name), hash|
next if new_name.count("/") != 2
hash[new_name] ||= []
hash[new_name] << old_name
end
end
sig { params(new_tap: Tap, name_or_token: String).returns(T::Array[String]) }
def self.reverse_tap_migrations_renames(new_tap, name_or_token)
key = "#{new_tap}/#{name_or_token}"
Tap.each_with_object([]) do |tap, array|
next unless (renames = tap.reverse_tap_migrations_renames[key])
array.concat(renames)
end
end
# Array with autobump names # Array with autobump names
sig { returns(T::Array[String]) } sig { returns(T::Array[String]) }
def autobump def autobump