From 0d40f48e8d9c989695de7a94a8adaee3ad0150b3 Mon Sep 17 00:00:00 2001 From: Issy Long Date: Thu, 26 Jun 2025 23:15:23 +0100 Subject: [PATCH 1/2] Reapply "Make some of the `bundle` commands Sorbet `typed: true`" - This reverts commit 68dbf12220f9a52ddf5ca5eb3aa1b356aa42da3a that was a revert of commit 68596ec720a50f44ae9c30c5806aa7f2d4bcc96f because I put the RBI file in the wrong place and Tapioca got rid of it, causing this week's release to be blocked. --- Library/Homebrew/bundle/brew_dumper.rb | 11 ++++++++--- Library/Homebrew/bundle/brew_dumper.rbi | 5 +++++ Library/Homebrew/bundle/checker.rb | 6 +++--- 3 files changed, 16 insertions(+), 6 deletions(-) create mode 100644 Library/Homebrew/bundle/brew_dumper.rbi diff --git a/Library/Homebrew/bundle/brew_dumper.rb b/Library/Homebrew/bundle/brew_dumper.rb index 403c92eec6..67c5a6c6a2 100644 --- a/Library/Homebrew/bundle/brew_dumper.rb +++ b/Library/Homebrew/bundle/brew_dumper.rb @@ -1,4 +1,4 @@ -# typed: false # rubocop:todo Sorbet/TrueSigil +# typed: true # frozen_string_literal: true require "json" @@ -189,7 +189,12 @@ module Homebrew class Topo < Hash include TSort + + def each_key(&block) + keys.each(&block) + end alias tsort_each_node each_key + def tsort_each_child(node, &block) fetch(node.downcase).sort.each(&block) end @@ -230,8 +235,8 @@ module Homebrew odie <<~EOS Formulae dependency graph sorting failed (likely due to a circular dependency): - #{cycle_first}: #{topo[cycle_first]} - #{cycle_last}: #{topo[cycle_last]} + #{cycle_first}: #{topo[cycle_first] if topo} + #{cycle_last}: #{topo[cycle_last] if topo} Please run the following commands and try again: brew update brew uninstall --ignore-dependencies --force #{cycle_first} #{cycle_last} diff --git a/Library/Homebrew/bundle/brew_dumper.rbi b/Library/Homebrew/bundle/brew_dumper.rbi new file mode 100644 index 0000000000..f747988811 --- /dev/null +++ b/Library/Homebrew/bundle/brew_dumper.rbi @@ -0,0 +1,5 @@ +# typed: true + +module Homebrew::Bundle::BrewDumper + include Kernel +end diff --git a/Library/Homebrew/bundle/checker.rb b/Library/Homebrew/bundle/checker.rb index 411e0d8c0b..3d8959ffdf 100644 --- a/Library/Homebrew/bundle/checker.rb +++ b/Library/Homebrew/bundle/checker.rb @@ -1,4 +1,4 @@ -# typed: false # rubocop:todo Sorbet/TrueSigil +# typed: true # frozen_string_literal: true module Homebrew @@ -23,7 +23,7 @@ module Homebrew else "needs to be installed or updated." end - "#{self.class::PACKAGE_TYPE_NAME} #{name} #{reason}" + "#{self.class.const_get(:PACKAGE_TYPE_NAME)} #{name} #{reason}" end def full_check(packages, no_upgrade:) @@ -33,7 +33,7 @@ module Homebrew def checkable_entries(all_entries) require "bundle/skipper" - all_entries.select { |e| e.type == self.class::PACKAGE_TYPE } + all_entries.select { |e| e.type == self.class.const_get(:PACKAGE_TYPE) } .reject(&Bundle::Skipper.method(:skip?)) end From a2e39c4814991e5d9fae8fdbe3b0cf78ac5aabea Mon Sep 17 00:00:00 2001 From: Issy Long Date: Fri, 27 Jun 2025 18:15:37 +0100 Subject: [PATCH 2/2] Make `Bundle::BrewDumper` more Homebrew-y - https://github.com/Homebrew/brew/pull/20182#discussion_r2170422499 --- Library/Homebrew/bundle/brew_dumper.rb | 25 ++++++++++--------------- Library/Homebrew/bundle/brew_dumper.rbi | 5 ----- 2 files changed, 10 insertions(+), 20 deletions(-) delete mode 100644 Library/Homebrew/bundle/brew_dumper.rbi diff --git a/Library/Homebrew/bundle/brew_dumper.rb b/Library/Homebrew/bundle/brew_dumper.rb index 67c5a6c6a2..bcae5f8630 100644 --- a/Library/Homebrew/bundle/brew_dumper.rb +++ b/Library/Homebrew/bundle/brew_dumper.rb @@ -8,9 +8,7 @@ module Homebrew module Bundle # TODO: refactor into multiple modules module BrewDumper - module_function - - def reset! + def self.reset! require "bundle/brew_services" Homebrew::Bundle::BrewServices.reset! @@ -21,14 +19,14 @@ module Homebrew @formula_oldnames = nil end - def formulae + def self.formulae return @formulae if @formulae formulae_by_full_name @formulae end - def formulae_by_full_name(name = nil) + def self.formulae_by_full_name(name = nil) return @formulae_by_full_name[name] if name.present? && @formulae_by_full_name&.key?(name) require "formula" @@ -51,11 +49,11 @@ module Homebrew {} end - def formulae_by_name(name) + def self.formulae_by_name(name) formulae_by_full_name(name) || @formulae_by_name[name] end - def dump(describe: false, no_restart: false) + def self.dump(describe: false, no_restart: false) require "bundle/brew_services" requested_formula = formulae.select do |f| @@ -77,7 +75,7 @@ module Homebrew end.join("\n") end - def formula_aliases + def self.formula_aliases return @formula_aliases if @formula_aliases @formula_aliases = {} @@ -96,7 +94,7 @@ module Homebrew @formula_aliases end - def formula_oldnames + def self.formula_oldnames return @formula_oldnames if @formula_oldnames @formula_oldnames = {} @@ -115,7 +113,7 @@ module Homebrew @formula_oldnames end - def add_formula(formula) + private_class_method def self.add_formula(formula) hash = formula_to_hash formula @formulae_by_name[hash[:name]] = hash @@ -123,9 +121,8 @@ module Homebrew hash end - private_class_method :add_formula - def formula_to_hash(formula) + private_class_method def self.formula_to_hash(formula) keg = if formula.linked? link = true if formula.keg_only? formula.linked_keg @@ -185,7 +182,6 @@ module Homebrew official_tap: formula.tap&.official? || false, } end - private_class_method :formula_to_hash class Topo < Hash include TSort @@ -200,7 +196,7 @@ module Homebrew end end - def sort!(formulae) + private_class_method def self.sort!(formulae) # Step 1: Sort by formula full name while putting tap formulae behind core formulae. # So we can have a nicer output. formulae = formulae.sort do |a, b| @@ -243,7 +239,6 @@ module Homebrew brew install #{cycle_first} #{cycle_last} EOS end - private_class_method :sort! end end end diff --git a/Library/Homebrew/bundle/brew_dumper.rbi b/Library/Homebrew/bundle/brew_dumper.rbi deleted file mode 100644 index f747988811..0000000000 --- a/Library/Homebrew/bundle/brew_dumper.rbi +++ /dev/null @@ -1,5 +0,0 @@ -# typed: true - -module Homebrew::Bundle::BrewDumper - include Kernel -end