From 5510c3fb2bd24fe31138f4d77d424be311d2d7ef Mon Sep 17 00:00:00 2001 From: Bo Anderson Date: Thu, 27 Apr 2023 04:09:41 +0100 Subject: [PATCH] Support formula renames in API --- Library/Homebrew/api/formula.rb | 14 ++++++++++++++ Library/Homebrew/tap.rb | 4 +++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/Library/Homebrew/api/formula.rb b/Library/Homebrew/api/formula.rb index adf2226ca9..7a0a390827 100644 --- a/Library/Homebrew/api/formula.rb +++ b/Library/Homebrew/api/formula.rb @@ -25,10 +25,14 @@ module Homebrew target: HOMEBREW_CACHE_API/"formula.jws.json" cache["aliases"] = {} + cache["renames"] = {} cache["formulae"] = json_formulae.to_h do |json_formula| json_formula["aliases"].each do |alias_name| cache["aliases"][alias_name] = json_formula["name"] end + (json_formula["oldnames"] || [json_formula["oldname"]].compact).each do |oldname| + cache["renames"][oldname] = json_formula["name"] + end [json_formula["name"], json_formula.except("name")] end @@ -57,6 +61,16 @@ module Homebrew cache["aliases"] end + sig { returns(Hash) } + def all_renames + unless cache.key?("renames") + json_updated = download_and_cache_data! + write_names_and_aliases(regenerate: json_updated) + end + + cache["renames"] + end + sig { params(regenerate: T::Boolean).void } def write_names_and_aliases(regenerate: false) download_and_cache_data! unless cache.key?("formulae") diff --git a/Library/Homebrew/tap.rb b/Library/Homebrew/tap.rb index f72624c07e..1e79ac8890 100644 --- a/Library/Homebrew/tap.rb +++ b/Library/Homebrew/tap.rb @@ -933,9 +933,11 @@ class CoreTap < Tap # @private sig { returns(Hash) } def formula_renames - @formula_renames ||= begin + @formula_renames ||= if Homebrew::EnvConfig.no_install_from_api? self.class.ensure_installed! super + else + Homebrew::API::Formula.all_renames end end