diff --git a/Library/Homebrew/bundle.rb b/Library/Homebrew/bundle.rb index 0b5d9f20b1..d4ce509cac 100644 --- a/Library/Homebrew/bundle.rb +++ b/Library/Homebrew/bundle.rb @@ -1,40 +1,89 @@ -# typed: strict +# typed: true # rubocop:todo Sorbet/StrictSigil # frozen_string_literal: true -require "bundle/brewfile" -require "bundle/bundle" -require "bundle/dsl" -require "bundle/adder" -require "bundle/checker" -require "bundle/remover" -require "bundle/skipper" -require "bundle/brew_services" -require "bundle/brew_service_checker" -require "bundle/brew_installer" -require "bundle/brew_checker" -require "bundle/cask_installer" -require "bundle/mac_app_store_installer" -require "bundle/mac_app_store_checker" -require "bundle/tap_installer" -require "bundle/brew_dumper" -require "bundle/cask_dumper" -require "bundle/cask_checker" -require "bundle/mac_app_store_dumper" -require "bundle/tap_dumper" -require "bundle/tap_checker" -require "bundle/dumper" -require "bundle/installer" -require "bundle/lister" -require "bundle/commands/install" -require "bundle/commands/dump" -require "bundle/commands/cleanup" -require "bundle/commands/check" -require "bundle/commands/exec" -require "bundle/commands/list" -require "bundle/commands/add" -require "bundle/commands/remove" -require "bundle/whalebrew_installer" -require "bundle/whalebrew_dumper" -require "bundle/vscode_extension_checker" -require "bundle/vscode_extension_dumper" -require "bundle/vscode_extension_installer" +require "English" + +module Homebrew + module Bundle + class << self + def system(cmd, *args, verbose: false) + return super cmd, *args if verbose + + logs = [] + success = T.let(nil, T.nilable(T::Boolean)) + IO.popen([cmd, *args], err: [:child, :out]) do |pipe| + while (buf = pipe.gets) + logs << buf + end + Process.wait(pipe.pid) + success = $CHILD_STATUS.success? + pipe.close + end + puts logs.join unless success + success + end + + def brew(*args, verbose: false) + system(HOMEBREW_BREW_FILE, *args, verbose:) + end + + def mas_installed? + @mas_installed ||= which_formula("mas") + end + + def vscode_installed? + @vscode_installed ||= which_vscode.present? + end + + def which_vscode + @which_vscode ||= which("code", ORIGINAL_PATHS) + @which_vscode ||= which("codium", ORIGINAL_PATHS) + @which_vscode ||= which("cursor", ORIGINAL_PATHS) + @which_vscode ||= which("code-insiders", ORIGINAL_PATHS) + end + + def whalebrew_installed? + @whalebrew_installed ||= which_formula("whalebrew") + end + + def cask_installed? + @cask_installed ||= File.directory?("#{HOMEBREW_PREFIX}/Caskroom") && + (File.directory?("#{HOMEBREW_LIBRARY}/Taps/homebrew/homebrew-cask") || + !Homebrew::EnvConfig.no_install_from_api?) + end + + def which_formula(name) + formula = Formulary.factory(name) + ENV["PATH"] = "#{formula.opt_bin}:#{ENV.fetch("PATH", nil)}" if formula.any_version_installed? + which(name).present? + end + + def exchange_uid_if_needed!(&block) + euid = Process.euid + uid = Process.uid + return yield if euid == uid + + old_euid = euid + process_reexchangeable = Process::UID.re_exchangeable? + if process_reexchangeable + Process::UID.re_exchange + else + Process::Sys.seteuid(uid) + end + + home = T.must(Etc.getpwuid(Process.uid)).dir + return_value = with_env("HOME" => home, &block) + + if process_reexchangeable + Process::UID.re_exchange + else + Process::Sys.seteuid(old_euid) + end + + return_value + end + end + end +end + +require "extend/os/bundle/bundle" diff --git a/Library/Homebrew/bundle/adder.rb b/Library/Homebrew/bundle/adder.rb index 6b86f37128..00914550cf 100644 --- a/Library/Homebrew/bundle/adder.rb +++ b/Library/Homebrew/bundle/adder.rb @@ -1,6 +1,9 @@ # typed: true # rubocop:todo Sorbet/StrictSigil # frozen_string_literal: true +require "bundle/brewfile" +require "bundle/dumper" + module Homebrew module Bundle module Adder diff --git a/Library/Homebrew/bundle/brew_checker.rb b/Library/Homebrew/bundle/brew_checker.rb index 8212361be2..31fefc66b5 100644 --- a/Library/Homebrew/bundle/brew_checker.rb +++ b/Library/Homebrew/bundle/brew_checker.rb @@ -1,6 +1,8 @@ # typed: true # rubocop:todo Sorbet/StrictSigil # frozen_string_literal: true +require "bundle/brew_installer" + module Homebrew module Bundle module Checker diff --git a/Library/Homebrew/bundle/brew_dumper.rb b/Library/Homebrew/bundle/brew_dumper.rb index 34c34f62fa..403c92eec6 100644 --- a/Library/Homebrew/bundle/brew_dumper.rb +++ b/Library/Homebrew/bundle/brew_dumper.rb @@ -11,6 +11,8 @@ module Homebrew module_function def reset! + require "bundle/brew_services" + Homebrew::Bundle::BrewServices.reset! @formulae = nil @formulae_by_full_name = nil @@ -54,6 +56,8 @@ module Homebrew end def dump(describe: false, no_restart: false) + require "bundle/brew_services" + requested_formula = formulae.select do |f| f[:installed_on_request?] || !f[:installed_as_dependency?] end diff --git a/Library/Homebrew/bundle/brew_installer.rb b/Library/Homebrew/bundle/brew_installer.rb index 641adebaf3..5b0783f163 100644 --- a/Library/Homebrew/bundle/brew_installer.rb +++ b/Library/Homebrew/bundle/brew_installer.rb @@ -77,6 +77,7 @@ module Homebrew end def start_service_needed? + require "bundle/brew_services" start_service? && !BrewServices.started?(@full_name) end @@ -96,6 +97,7 @@ module Homebrew end def service_change_state!(verbose:) + require "bundle/brew_services" if restart_service_needed? puts "Restarting #{@name} service." if verbose BrewServices.restart(@full_name, verbose:) @@ -156,6 +158,7 @@ module Homebrew return true if array.include?(formula) return true if array.include?(formula.split("/").last) + require "bundle/brew_dumper" old_names = Homebrew::Bundle::BrewDumper.formula_oldnames old_name = old_names[formula] old_name ||= old_names[formula.split("/").last] @@ -195,6 +198,7 @@ module Homebrew end def self.formulae + require "bundle/brew_dumper" Homebrew::Bundle::BrewDumper.formulae end @@ -225,6 +229,7 @@ module Homebrew conflicts_with = Set.new conflicts_with += @conflicts_with_arg + require "bundle/brew_dumper" if (formula = Homebrew::Bundle::BrewDumper.formulae_by_full_name(@full_name)) && (formula_conflicts_with = formula[:conflicts_with]) conflicts_with += formula_conflicts_with @@ -246,10 +251,11 @@ module Homebrew end return false unless Bundle.brew("unlink", conflict, verbose:) - if restart_service? - puts "Stopping #{conflict} service (if it is running)." if verbose - BrewServices.stop(conflict, verbose:) - end + next unless restart_service? + + require "bundle/brew_services" + puts "Stopping #{conflict} service (if it is running)." if verbose + BrewServices.stop(conflict, verbose:) end true diff --git a/Library/Homebrew/bundle/brew_service_checker.rb b/Library/Homebrew/bundle/brew_service_checker.rb index a55ff5f468..235b76ac90 100644 --- a/Library/Homebrew/bundle/brew_service_checker.rb +++ b/Library/Homebrew/bundle/brew_service_checker.rb @@ -24,6 +24,7 @@ module Homebrew end def entry_to_formula(entry) + require "bundle/brew_installer" Homebrew::Bundle::BrewInstaller.new(entry.name, entry.options) end @@ -32,10 +33,12 @@ module Homebrew end def service_is_started?(service_name) + require "bundle/brew_services" Homebrew::Bundle::BrewServices.started?(service_name) end def lookup_old_name(service_name) + require "bundle/brew_dumper" @old_names ||= Homebrew::Bundle::BrewDumper.formula_oldnames old_name = @old_names[service_name] old_name ||= @old_names[service_name.split("/").last] diff --git a/Library/Homebrew/bundle/brewfile.rb b/Library/Homebrew/bundle/brewfile.rb index 7531445166..3c8adc8fab 100644 --- a/Library/Homebrew/bundle/brewfile.rb +++ b/Library/Homebrew/bundle/brewfile.rb @@ -1,6 +1,8 @@ # typed: true # rubocop:todo Sorbet/StrictSigil # frozen_string_literal: true +require "bundle/dsl" + module Homebrew module Bundle module Brewfile diff --git a/Library/Homebrew/bundle/bundle.rb b/Library/Homebrew/bundle/bundle.rb deleted file mode 100644 index d4ce509cac..0000000000 --- a/Library/Homebrew/bundle/bundle.rb +++ /dev/null @@ -1,89 +0,0 @@ -# typed: true # rubocop:todo Sorbet/StrictSigil -# frozen_string_literal: true - -require "English" - -module Homebrew - module Bundle - class << self - def system(cmd, *args, verbose: false) - return super cmd, *args if verbose - - logs = [] - success = T.let(nil, T.nilable(T::Boolean)) - IO.popen([cmd, *args], err: [:child, :out]) do |pipe| - while (buf = pipe.gets) - logs << buf - end - Process.wait(pipe.pid) - success = $CHILD_STATUS.success? - pipe.close - end - puts logs.join unless success - success - end - - def brew(*args, verbose: false) - system(HOMEBREW_BREW_FILE, *args, verbose:) - end - - def mas_installed? - @mas_installed ||= which_formula("mas") - end - - def vscode_installed? - @vscode_installed ||= which_vscode.present? - end - - def which_vscode - @which_vscode ||= which("code", ORIGINAL_PATHS) - @which_vscode ||= which("codium", ORIGINAL_PATHS) - @which_vscode ||= which("cursor", ORIGINAL_PATHS) - @which_vscode ||= which("code-insiders", ORIGINAL_PATHS) - end - - def whalebrew_installed? - @whalebrew_installed ||= which_formula("whalebrew") - end - - def cask_installed? - @cask_installed ||= File.directory?("#{HOMEBREW_PREFIX}/Caskroom") && - (File.directory?("#{HOMEBREW_LIBRARY}/Taps/homebrew/homebrew-cask") || - !Homebrew::EnvConfig.no_install_from_api?) - end - - def which_formula(name) - formula = Formulary.factory(name) - ENV["PATH"] = "#{formula.opt_bin}:#{ENV.fetch("PATH", nil)}" if formula.any_version_installed? - which(name).present? - end - - def exchange_uid_if_needed!(&block) - euid = Process.euid - uid = Process.uid - return yield if euid == uid - - old_euid = euid - process_reexchangeable = Process::UID.re_exchangeable? - if process_reexchangeable - Process::UID.re_exchange - else - Process::Sys.seteuid(uid) - end - - home = T.must(Etc.getpwuid(Process.uid)).dir - return_value = with_env("HOME" => home, &block) - - if process_reexchangeable - Process::UID.re_exchange - else - Process::Sys.seteuid(old_euid) - end - - return_value - end - end - end -end - -require "extend/os/bundle/bundle" diff --git a/Library/Homebrew/bundle/cask_checker.rb b/Library/Homebrew/bundle/cask_checker.rb index 62bd4ba72c..ed715daf1c 100644 --- a/Library/Homebrew/bundle/cask_checker.rb +++ b/Library/Homebrew/bundle/cask_checker.rb @@ -1,6 +1,8 @@ # typed: true # rubocop:todo Sorbet/StrictSigil # frozen_string_literal: true +require "bundle/cask_installer" + module Homebrew module Bundle module Checker diff --git a/Library/Homebrew/bundle/cask_installer.rb b/Library/Homebrew/bundle/cask_installer.rb index 637db5d238..781bbf57bf 100644 --- a/Library/Homebrew/bundle/cask_installer.rb +++ b/Library/Homebrew/bundle/cask_installer.rb @@ -14,6 +14,7 @@ module Homebrew return true if outdated_casks.include?(name) return false unless options[:greedy] + require "bundle/cask_dumper" Homebrew::Bundle::CaskDumper.cask_is_outdated_using_greedy?(name) end @@ -95,10 +96,12 @@ module Homebrew end def self.installed_casks + require "bundle/cask_dumper" @installed_casks ||= Homebrew::Bundle::CaskDumper.cask_names end def self.outdated_casks + require "bundle/cask_dumper" @outdated_casks ||= Homebrew::Bundle::CaskDumper.outdated_cask_names end end diff --git a/Library/Homebrew/bundle/checker.rb b/Library/Homebrew/bundle/checker.rb index 8b815f71c0..9c6d9e00d9 100644 --- a/Library/Homebrew/bundle/checker.rb +++ b/Library/Homebrew/bundle/checker.rb @@ -32,6 +32,7 @@ module Homebrew end def checkable_entries(all_entries) + require "bundle/skipper" all_entries.select { |e| e.type == self.class::PACKAGE_TYPE } .reject(&Bundle::Skipper.method(:skip?)) end @@ -67,6 +68,7 @@ module Homebrew }.freeze def self.check(global: false, file: nil, exit_on_first_error: false, no_upgrade: false, verbose: false) + require "bundle/brewfile" @dsl ||= Brewfile.read(global:, file:) check_method_names = CHECKS.keys @@ -88,6 +90,7 @@ module Homebrew end def self.casks_to_install(exit_on_first_error: false, no_upgrade: false, verbose: false) + require "bundle/cask_checker" Homebrew::Bundle::Checker::CaskChecker.new.find_actionable( @dsl.entries, exit_on_first_error:, no_upgrade:, verbose:, @@ -95,6 +98,7 @@ module Homebrew end def self.formulae_to_install(exit_on_first_error: false, no_upgrade: false, verbose: false) + require "bundle/brew_checker" Homebrew::Bundle::Checker::BrewChecker.new.find_actionable( @dsl.entries, exit_on_first_error:, no_upgrade:, verbose:, @@ -102,6 +106,7 @@ module Homebrew end def self.taps_to_tap(exit_on_first_error: false, no_upgrade: false, verbose: false) + require "bundle/tap_checker" Homebrew::Bundle::Checker::TapChecker.new.find_actionable( @dsl.entries, exit_on_first_error:, no_upgrade:, verbose:, @@ -109,6 +114,7 @@ module Homebrew end def self.apps_to_install(exit_on_first_error: false, no_upgrade: false, verbose: false) + require "bundle/mac_app_store_checker" Homebrew::Bundle::Checker::MacAppStoreChecker.new.find_actionable( @dsl.entries, exit_on_first_error:, no_upgrade:, verbose:, @@ -116,6 +122,7 @@ module Homebrew end def self.extensions_to_install(exit_on_first_error: false, no_upgrade: false, verbose: false) + require "bundle/vscode_extension_checker" Homebrew::Bundle::Checker::VscodeExtensionChecker.new.find_actionable( @dsl.entries, exit_on_first_error:, no_upgrade:, verbose:, @@ -123,6 +130,7 @@ module Homebrew end def self.formulae_to_start(exit_on_first_error: false, no_upgrade: false, verbose: false) + require "bundle/brew_service_checker" Homebrew::Bundle::Checker::BrewServiceChecker.new.find_actionable( @dsl.entries, exit_on_first_error:, no_upgrade:, verbose:, @@ -130,6 +138,12 @@ module Homebrew end def self.reset! + require "bundle/cask_dumper" + require "bundle/brew_dumper" + require "bundle/mac_app_store_dumper" + require "bundle/tap_dumper" + require "bundle/brew_services" + @dsl = nil Homebrew::Bundle::CaskDumper.reset! Homebrew::Bundle::BrewDumper.reset! diff --git a/Library/Homebrew/bundle/commands/add.rb b/Library/Homebrew/bundle/commands/add.rb index 99e981be9c..fe26cd8a28 100644 --- a/Library/Homebrew/bundle/commands/add.rb +++ b/Library/Homebrew/bundle/commands/add.rb @@ -1,6 +1,8 @@ # typed: true # rubocop:todo Sorbet/StrictSigil # frozen_string_literal: true +require "bundle/adder" + module Homebrew module Bundle module Commands diff --git a/Library/Homebrew/bundle/commands/check.rb b/Library/Homebrew/bundle/commands/check.rb index 45846f8390..45c629f7af 100644 --- a/Library/Homebrew/bundle/commands/check.rb +++ b/Library/Homebrew/bundle/commands/check.rb @@ -1,6 +1,8 @@ # typed: true # rubocop:todo Sorbet/StrictSigil # frozen_string_literal: true +require "bundle/checker" + module Homebrew module Bundle module Commands diff --git a/Library/Homebrew/bundle/commands/cleanup.rb b/Library/Homebrew/bundle/commands/cleanup.rb index 701338c923..3109c607d9 100644 --- a/Library/Homebrew/bundle/commands/cleanup.rb +++ b/Library/Homebrew/bundle/commands/cleanup.rb @@ -9,6 +9,12 @@ module Homebrew # TODO: refactor into multiple modules module Cleanup def self.reset! + require "bundle/cask_dumper" + require "bundle/brew_dumper" + require "bundle/tap_dumper" + require "bundle/vscode_extension_dumper" + require "bundle/brew_services" + @dsl = nil @kept_casks = nil @kept_formulae = nil @@ -87,12 +93,15 @@ module Homebrew end def self.casks_to_uninstall(global: false, file: nil) + require "bundle/cask_dumper" Homebrew::Bundle::CaskDumper.cask_names - kept_casks(global:, file:) end def self.formulae_to_uninstall(global: false, file: nil) kept_formulae = self.kept_formulae(global:, file:) + require "bundle/brew_dumper" + require "bundle/brew_installer" current_formulae = Homebrew::Bundle::BrewDumper.formulae current_formulae.reject! do |f| Homebrew::Bundle::BrewInstaller.formula_in_array?(f[:full_name], kept_formulae) @@ -101,6 +110,10 @@ module Homebrew end private_class_method def self.kept_formulae(global: false, file: nil) + require "bundle/brewfile" + require "bundle/brew_dumper" + require "bundle/cask_dumper" + @kept_formulae ||= begin @dsl ||= Brewfile.read(global:, file:) @@ -117,6 +130,7 @@ module Homebrew end private_class_method def self.kept_casks(global: false, file: nil) + require "bundle/brewfile" return @kept_casks if @kept_casks @dsl ||= Brewfile.read(global:, file:) @@ -152,6 +166,9 @@ module Homebrew IGNORED_TAPS = %w[homebrew/core].freeze def self.taps_to_untap(global: false, file: nil) + require "bundle/brewfile" + require "bundle/tap_dumper" + @dsl ||= Brewfile.read(global:, file:) kept_formulae = self.kept_formulae(global:, file:).filter_map(&method(:lookup_formula)) kept_taps = @dsl.entries.select { |e| e.type == :tap }.map(&:name) @@ -168,6 +185,7 @@ module Homebrew end def self.vscode_extensions_to_uninstall(global: false, file: nil) + require "bundle/brewfile" @dsl ||= Brewfile.read(global:, file:) kept_extensions = @dsl.entries.select { |e| e.type == :vscode }.map { |x| x.name.downcase } @@ -176,6 +194,7 @@ module Homebrew # find any in the `Brewfile`. return [].freeze if kept_extensions.empty? + require "bundle/vscode_extension_dumper" current_extensions = Homebrew::Bundle::VscodeExtensionDumper.extensions current_extensions - kept_extensions end diff --git a/Library/Homebrew/bundle/commands/dump.rb b/Library/Homebrew/bundle/commands/dump.rb index 188b98ccc0..a8938c137d 100644 --- a/Library/Homebrew/bundle/commands/dump.rb +++ b/Library/Homebrew/bundle/commands/dump.rb @@ -1,6 +1,8 @@ # typed: true # rubocop:todo Sorbet/StrictSigil # frozen_string_literal: true +require "bundle/dumper" + module Homebrew module Bundle module Commands diff --git a/Library/Homebrew/bundle/commands/exec.rb b/Library/Homebrew/bundle/commands/exec.rb index 6df948a396..c0a55f7035 100644 --- a/Library/Homebrew/bundle/commands/exec.rb +++ b/Library/Homebrew/bundle/commands/exec.rb @@ -57,6 +57,7 @@ module Homebrew command = args.first + require "bundle/brewfile" @dsl = Brewfile.read(global:, file:) require "formula" diff --git a/Library/Homebrew/bundle/commands/install.rb b/Library/Homebrew/bundle/commands/install.rb index 5508d98d55..a8ce0bdfd0 100644 --- a/Library/Homebrew/bundle/commands/install.rb +++ b/Library/Homebrew/bundle/commands/install.rb @@ -1,6 +1,9 @@ # typed: true # rubocop:todo Sorbet/StrictSigil # frozen_string_literal: true +require "bundle/brewfile" +require "bundle/installer" + module Homebrew module Bundle module Commands diff --git a/Library/Homebrew/bundle/commands/list.rb b/Library/Homebrew/bundle/commands/list.rb index 0b25381f43..af55fdedb8 100644 --- a/Library/Homebrew/bundle/commands/list.rb +++ b/Library/Homebrew/bundle/commands/list.rb @@ -1,6 +1,9 @@ # typed: true # rubocop:todo Sorbet/StrictSigil # frozen_string_literal: true +require "bundle/brewfile" +require "bundle/lister" + module Homebrew module Bundle module Commands diff --git a/Library/Homebrew/bundle/commands/remove.rb b/Library/Homebrew/bundle/commands/remove.rb index 30bbf6b985..844ef39d90 100644 --- a/Library/Homebrew/bundle/commands/remove.rb +++ b/Library/Homebrew/bundle/commands/remove.rb @@ -1,6 +1,8 @@ # typed: true # rubocop:todo Sorbet/StrictSigil # frozen_string_literal: true +require "bundle/remover" + module Homebrew module Bundle module Commands diff --git a/Library/Homebrew/bundle/dumper.rb b/Library/Homebrew/bundle/dumper.rb index 9ffdecfd62..a9ca3611fc 100644 --- a/Library/Homebrew/bundle/dumper.rb +++ b/Library/Homebrew/bundle/dumper.rb @@ -14,6 +14,12 @@ module Homebrew end def self.build_brewfile(describe:, no_restart:, brews:, taps:, casks:, mas:, whalebrew:, vscode:) + require "bundle/tap_dumper" + require "bundle/cask_dumper" + require "bundle/mac_app_store_dumper" + require "bundle/whalebrew_dumper" + require "bundle/vscode_extension_dumper" + content = [] content << TapDumper.dump if taps content << BrewDumper.dump(describe:, no_restart:) if brews @@ -33,6 +39,7 @@ module Homebrew end def self.brewfile_path(global: false, file: nil) + require "bundle/brewfile" Brewfile.path(dash_writes_to_stdout: true, global:, file:) end diff --git a/Library/Homebrew/bundle/installer.rb b/Library/Homebrew/bundle/installer.rb index c03a30118d..c3f11d4eb0 100644 --- a/Library/Homebrew/bundle/installer.rb +++ b/Library/Homebrew/bundle/installer.rb @@ -1,6 +1,14 @@ # typed: true # rubocop:todo Sorbet/StrictSigil # frozen_string_literal: true +require "bundle/dsl" +require "bundle/brew_installer" +require "bundle/cask_installer" +require "bundle/mac_app_store_installer" +require "bundle/whalebrew_installer" +require "bundle/vscode_extension_installer" +require "bundle/tap_installer" + module Homebrew module Bundle module Installer diff --git a/Library/Homebrew/bundle/mac_app_store_installer.rb b/Library/Homebrew/bundle/mac_app_store_installer.rb index 564bc25474..faa49d362a 100644 --- a/Library/Homebrew/bundle/mac_app_store_installer.rb +++ b/Library/Homebrew/bundle/mac_app_store_installer.rb @@ -61,6 +61,7 @@ module Homebrew end def self.installed_app_ids + require "bundle/mac_app_store_dumper" @installed_app_ids ||= Homebrew::Bundle::MacAppStoreDumper.app_ids end diff --git a/Library/Homebrew/bundle/remover.rb b/Library/Homebrew/bundle/remover.rb index d18d5414cd..c99e329fd3 100644 --- a/Library/Homebrew/bundle/remover.rb +++ b/Library/Homebrew/bundle/remover.rb @@ -5,6 +5,9 @@ module Homebrew module Bundle module Remover def self.remove(*args, type:, global:, file:) + require "bundle/brewfile" + require "bundle/dumper" + brewfile = Brewfile.read(global:, file:) content = brewfile.input entry_type = type.to_s if type != :none diff --git a/Library/Homebrew/bundle/skipper.rb b/Library/Homebrew/bundle/skipper.rb index cbebe21519..349d3ceff8 100644 --- a/Library/Homebrew/bundle/skipper.rb +++ b/Library/Homebrew/bundle/skipper.rb @@ -8,6 +8,8 @@ module Homebrew module Skipper class << self def skip?(entry, silent: false) + require "bundle/brew_dumper" + # TODO: use extend/OS here # rubocop:todo Homebrew/MoveToExtendOS if (Hardware::CPU.arm? || OS.linux?) && diff --git a/Library/Homebrew/bundle/tap_checker.rb b/Library/Homebrew/bundle/tap_checker.rb index 81f0a59550..c36fb52e33 100644 --- a/Library/Homebrew/bundle/tap_checker.rb +++ b/Library/Homebrew/bundle/tap_checker.rb @@ -12,6 +12,7 @@ module Homebrew requested_taps = format_checkable(entries) return [] if requested_taps.empty? + require "bundle/tap_dumper" current_taps = Homebrew::Bundle::TapDumper.tap_names (requested_taps - current_taps).map { |entry| "Tap #{entry} needs to be tapped." } end diff --git a/Library/Homebrew/bundle/tap_installer.rb b/Library/Homebrew/bundle/tap_installer.rb index 4e4a029ba1..77718e116d 100644 --- a/Library/Homebrew/bundle/tap_installer.rb +++ b/Library/Homebrew/bundle/tap_installer.rb @@ -28,6 +28,7 @@ module Homebrew end unless success + require "bundle/skipper" Homebrew::Bundle::Skipper.tap_failed!(name) return false end @@ -37,6 +38,7 @@ module Homebrew end def self.installed_taps + require "bundle/tap_dumper" @installed_taps ||= Homebrew::Bundle::TapDumper.tap_names end end diff --git a/Library/Homebrew/bundle/vscode_extension_checker.rb b/Library/Homebrew/bundle/vscode_extension_checker.rb index 9b78a3e4a0..44cfa6dca3 100644 --- a/Library/Homebrew/bundle/vscode_extension_checker.rb +++ b/Library/Homebrew/bundle/vscode_extension_checker.rb @@ -13,6 +13,7 @@ module Homebrew end def installed_and_up_to_date?(extension, no_upgrade: false) + require "bundle/vscode_extension_installer" Homebrew::Bundle::VscodeExtensionInstaller.extension_installed?(extension) end end diff --git a/Library/Homebrew/bundle/vscode_extension_installer.rb b/Library/Homebrew/bundle/vscode_extension_installer.rb index 1085211fb0..14e4ef02da 100644 --- a/Library/Homebrew/bundle/vscode_extension_installer.rb +++ b/Library/Homebrew/bundle/vscode_extension_installer.rb @@ -44,6 +44,7 @@ module Homebrew end def self.installed_extensions + require "bundle/vscode_extension_dumper" @installed_extensions ||= Homebrew::Bundle::VscodeExtensionDumper.extensions end end diff --git a/Library/Homebrew/bundle/whalebrew_installer.rb b/Library/Homebrew/bundle/whalebrew_installer.rb index f6e0998706..02ca28b947 100644 --- a/Library/Homebrew/bundle/whalebrew_installer.rb +++ b/Library/Homebrew/bundle/whalebrew_installer.rb @@ -40,6 +40,7 @@ module Homebrew end def self.installed_images + require "bundle/whalebrew_dumper" @installed_images ||= Homebrew::Bundle::WhalebrewDumper.images end end diff --git a/Library/Homebrew/cmd/bundle.rb b/Library/Homebrew/cmd/bundle.rb index c7b8394dff..cd310076ba 100755 --- a/Library/Homebrew/cmd/bundle.rb +++ b/Library/Homebrew/cmd/bundle.rb @@ -156,6 +156,7 @@ module Homebrew raise UsageError, "`--install` cannot be used with `install`, `upgrade` or no subcommand." end + require "bundle/commands/install" redirect_stdout($stderr) do Homebrew::Bundle::Commands::Install.run(global:, file:, no_upgrade:, verbose:, force:, quiet: true) end @@ -163,6 +164,7 @@ module Homebrew case subcommand when nil, "install", "upgrade" + require "bundle/commands/install" Homebrew::Bundle::Commands::Install.run(global:, file:, no_upgrade:, verbose:, force:, quiet: args.quiet?) cleanup = if ENV.fetch("HOMEBREW_BUNDLE_INSTALL_CLEANUP", nil) @@ -172,6 +174,7 @@ module Homebrew end if cleanup + require "bundle/commands/cleanup" Homebrew::Bundle::Commands::Cleanup.run( global:, file:, zap:, force: true, @@ -187,6 +190,7 @@ module Homebrew no_type_args end + require "bundle/commands/dump" Homebrew::Bundle::Commands::Dump.run( global:, file:, force:, describe: args.describe?, @@ -199,10 +203,13 @@ module Homebrew vscode: ) when "edit" + require "bundle/brewfile" exec_editor(Homebrew::Bundle::Brewfile.path(global:, file:)) when "cleanup" + require "bundle/commands/cleanup" Homebrew::Bundle::Commands::Cleanup.run(global:, file:, force:, zap:) when "check" + require "bundle/commands/check" Homebrew::Bundle::Commands::Check.run(global:, file:, no_upgrade:, verbose:) when "exec", "sh", "env" named_args = case subcommand @@ -225,8 +232,10 @@ module Homebrew when "env" ["env"] end + require "bundle/commands/exec" Homebrew::Bundle::Commands::Exec.run(*named_args, global:, file:, subcommand:) when "list" + require "bundle/commands/list" Homebrew::Bundle::Commands::List.run( global:, file:, @@ -259,8 +268,10 @@ module Homebrew else t end + require "bundle/commands/add" Homebrew::Bundle::Commands::Add.run(*named_args, type:, global:, file:) else + require "bundle/commands/remove" Homebrew::Bundle::Commands::Remove.run(*named_args, type: selected_types.first, global:, file:) end else diff --git a/Library/Homebrew/test/bundle/brew_dumper_spec.rb b/Library/Homebrew/test/bundle/brew_dumper_spec.rb index f86af50f93..08a92ae564 100644 --- a/Library/Homebrew/test/bundle/brew_dumper_spec.rb +++ b/Library/Homebrew/test/bundle/brew_dumper_spec.rb @@ -2,6 +2,7 @@ require "ostruct" require "bundle" +require "bundle/brew_dumper" require "tsort" require "formula" require "tab" diff --git a/Library/Homebrew/test/bundle/brew_installer_spec.rb b/Library/Homebrew/test/bundle/brew_installer_spec.rb index 6e9b5c945c..e6507f64d4 100644 --- a/Library/Homebrew/test/bundle/brew_installer_spec.rb +++ b/Library/Homebrew/test/bundle/brew_installer_spec.rb @@ -2,6 +2,9 @@ require "bundle" require "formula" +require "bundle/brew_installer" +require "bundle/brew_dumper" +require "bundle/brew_services" RSpec.describe Homebrew::Bundle::BrewInstaller do let(:formula_name) { "mysql" } diff --git a/Library/Homebrew/test/bundle/brew_services_spec.rb b/Library/Homebrew/test/bundle/brew_services_spec.rb index 7994d644ac..cdc2897414 100644 --- a/Library/Homebrew/test/bundle/brew_services_spec.rb +++ b/Library/Homebrew/test/bundle/brew_services_spec.rb @@ -1,6 +1,7 @@ # frozen_string_literal: true require "bundle" +require "bundle/brew_services" RSpec.describe Homebrew::Bundle::BrewServices do describe ".started_services" do diff --git a/Library/Homebrew/test/bundle/brewfile_spec.rb b/Library/Homebrew/test/bundle/brewfile_spec.rb index 1aae4ebfb2..9be511c2a5 100644 --- a/Library/Homebrew/test/bundle/brewfile_spec.rb +++ b/Library/Homebrew/test/bundle/brewfile_spec.rb @@ -1,6 +1,7 @@ # frozen_string_literal: true require "bundle" +require "bundle/brewfile" RSpec.describe Homebrew::Bundle::Brewfile do describe "path" do diff --git a/Library/Homebrew/test/bundle/cask_dumper_spec.rb b/Library/Homebrew/test/bundle/cask_dumper_spec.rb index cc8fd5663e..857176b1d5 100644 --- a/Library/Homebrew/test/bundle/cask_dumper_spec.rb +++ b/Library/Homebrew/test/bundle/cask_dumper_spec.rb @@ -1,6 +1,7 @@ # frozen_string_literal: true require "bundle" +require "bundle/cask_dumper" require "cask" RSpec.describe Homebrew::Bundle::CaskDumper do diff --git a/Library/Homebrew/test/bundle/cask_installer_spec.rb b/Library/Homebrew/test/bundle/cask_installer_spec.rb index ed35c3bd93..280ded80c4 100644 --- a/Library/Homebrew/test/bundle/cask_installer_spec.rb +++ b/Library/Homebrew/test/bundle/cask_installer_spec.rb @@ -1,6 +1,8 @@ # frozen_string_literal: true require "bundle" +require "bundle/cask_dumper" +require "bundle/cask_installer" RSpec.describe Homebrew::Bundle::CaskInstaller do describe ".installed_casks" do diff --git a/Library/Homebrew/test/bundle/commands/add_spec.rb b/Library/Homebrew/test/bundle/commands/add_spec.rb index c011a7f350..31ceef3c55 100644 --- a/Library/Homebrew/test/bundle/commands/add_spec.rb +++ b/Library/Homebrew/test/bundle/commands/add_spec.rb @@ -1,6 +1,7 @@ # frozen_string_literal: true require "bundle" +require "bundle/commands/add" require "cask/cask_loader" RSpec.describe Homebrew::Bundle::Commands::Add do diff --git a/Library/Homebrew/test/bundle/commands/check_spec.rb b/Library/Homebrew/test/bundle/commands/check_spec.rb index de0599238d..9bd2534b2c 100644 --- a/Library/Homebrew/test/bundle/commands/check_spec.rb +++ b/Library/Homebrew/test/bundle/commands/check_spec.rb @@ -1,6 +1,12 @@ # frozen_string_literal: true require "bundle" +require "bundle/commands/check" +require "bundle/brew_checker" +require "bundle/mac_app_store_checker" +require "bundle/vscode_extension_checker" +require "bundle/brew_installer" +require "bundle/mac_app_store_installer" RSpec.describe Homebrew::Bundle::Commands::Check do let(:do_check) do diff --git a/Library/Homebrew/test/bundle/commands/cleanup_spec.rb b/Library/Homebrew/test/bundle/commands/cleanup_spec.rb index 6bf7b878be..4dce283dce 100644 --- a/Library/Homebrew/test/bundle/commands/cleanup_spec.rb +++ b/Library/Homebrew/test/bundle/commands/cleanup_spec.rb @@ -1,6 +1,7 @@ # frozen_string_literal: true require "bundle" +require "bundle/commands/cleanup" RSpec.describe Homebrew::Bundle::Commands::Cleanup do describe "read Brewfile and current installation" do diff --git a/Library/Homebrew/test/bundle/commands/dump_spec.rb b/Library/Homebrew/test/bundle/commands/dump_spec.rb index 9555c40ff3..325827fcda 100644 --- a/Library/Homebrew/test/bundle/commands/dump_spec.rb +++ b/Library/Homebrew/test/bundle/commands/dump_spec.rb @@ -1,6 +1,12 @@ # frozen_string_literal: true require "bundle" +require "bundle/commands/dump" +require "bundle/cask_dumper" +require "bundle/brew_dumper" +require "bundle/tap_dumper" +require "bundle/whalebrew_dumper" +require "bundle/vscode_extension_dumper" RSpec.describe Homebrew::Bundle::Commands::Dump do subject(:dump) do diff --git a/Library/Homebrew/test/bundle/commands/exec_spec.rb b/Library/Homebrew/test/bundle/commands/exec_spec.rb index b68b991f61..1d127fc303 100644 --- a/Library/Homebrew/test/bundle/commands/exec_spec.rb +++ b/Library/Homebrew/test/bundle/commands/exec_spec.rb @@ -1,6 +1,7 @@ # frozen_string_literal: true require "bundle" +require "bundle/commands/exec" RSpec.describe Homebrew::Bundle::Commands::Exec do context "when a Brewfile is not found" do diff --git a/Library/Homebrew/test/bundle/commands/install_spec.rb b/Library/Homebrew/test/bundle/commands/install_spec.rb index 7ad0a070ca..a08398a4c8 100644 --- a/Library/Homebrew/test/bundle/commands/install_spec.rb +++ b/Library/Homebrew/test/bundle/commands/install_spec.rb @@ -1,6 +1,8 @@ # frozen_string_literal: true require "bundle" +require "bundle/commands/install" +require "bundle/skipper" RSpec.describe Homebrew::Bundle::Commands::Install do before do diff --git a/Library/Homebrew/test/bundle/commands/list_spec.rb b/Library/Homebrew/test/bundle/commands/list_spec.rb index c4ed592453..b87b83ae48 100644 --- a/Library/Homebrew/test/bundle/commands/list_spec.rb +++ b/Library/Homebrew/test/bundle/commands/list_spec.rb @@ -1,6 +1,7 @@ # frozen_string_literal: true require "bundle" +require "bundle/commands/list" RSpec.describe Homebrew::Bundle::Commands::List do subject(:list) { described_class.run(global: false, file: nil, brews:, casks:, taps:, mas:, whalebrew:, vscode:) } diff --git a/Library/Homebrew/test/bundle/commands/remove_spec.rb b/Library/Homebrew/test/bundle/commands/remove_spec.rb index 69ff15f278..25c2c74c3f 100644 --- a/Library/Homebrew/test/bundle/commands/remove_spec.rb +++ b/Library/Homebrew/test/bundle/commands/remove_spec.rb @@ -1,6 +1,7 @@ # frozen_string_literal: true require "bundle" +require "bundle/commands/remove" require "cask/cask_loader" RSpec.describe Homebrew::Bundle::Commands::Remove do diff --git a/Library/Homebrew/test/bundle/dsl_spec.rb b/Library/Homebrew/test/bundle/dsl_spec.rb index 18a08806af..636bda3334 100644 --- a/Library/Homebrew/test/bundle/dsl_spec.rb +++ b/Library/Homebrew/test/bundle/dsl_spec.rb @@ -1,6 +1,7 @@ # frozen_string_literal: true require "bundle" +require "bundle/dsl" RSpec.describe Homebrew::Bundle::Dsl do def dsl_from_string(string) diff --git a/Library/Homebrew/test/bundle/dumper_spec.rb b/Library/Homebrew/test/bundle/dumper_spec.rb index 31c8d1fcdb..2d9ea47bfa 100644 --- a/Library/Homebrew/test/bundle/dumper_spec.rb +++ b/Library/Homebrew/test/bundle/dumper_spec.rb @@ -1,6 +1,14 @@ # frozen_string_literal: true require "bundle" +require "bundle/dumper" +require "bundle/brew_dumper" +require "bundle/tap_dumper" +require "bundle/cask_dumper" +require "bundle/mac_app_store_dumper" +require "bundle/whalebrew_dumper" +require "bundle/vscode_extension_dumper" +require "bundle/brew_services" require "cask" RSpec.describe Homebrew::Bundle::Dumper do diff --git a/Library/Homebrew/test/bundle/mac_app_store_dumper_spec.rb b/Library/Homebrew/test/bundle/mac_app_store_dumper_spec.rb index 52a53e64a0..d37aef293e 100644 --- a/Library/Homebrew/test/bundle/mac_app_store_dumper_spec.rb +++ b/Library/Homebrew/test/bundle/mac_app_store_dumper_spec.rb @@ -1,6 +1,7 @@ # frozen_string_literal: true require "bundle" +require "bundle/mac_app_store_dumper" RSpec.describe Homebrew::Bundle::MacAppStoreDumper do subject(:dumper) { described_class } diff --git a/Library/Homebrew/test/bundle/mac_app_store_installer_spec.rb b/Library/Homebrew/test/bundle/mac_app_store_installer_spec.rb index d20dd81bcf..802ad87444 100644 --- a/Library/Homebrew/test/bundle/mac_app_store_installer_spec.rb +++ b/Library/Homebrew/test/bundle/mac_app_store_installer_spec.rb @@ -1,6 +1,7 @@ # frozen_string_literal: true require "bundle" +require "bundle/mac_app_store_installer" RSpec.describe Homebrew::Bundle::MacAppStoreInstaller do before do diff --git a/Library/Homebrew/test/bundle/remover_spec.rb b/Library/Homebrew/test/bundle/remover_spec.rb index 303f594933..944f86582a 100644 --- a/Library/Homebrew/test/bundle/remover_spec.rb +++ b/Library/Homebrew/test/bundle/remover_spec.rb @@ -1,6 +1,7 @@ # frozen_string_literal: true require "bundle" +require "bundle/remover" RSpec.describe Homebrew::Bundle::Remover do subject(:remover) { described_class } diff --git a/Library/Homebrew/test/bundle/skipper_spec.rb b/Library/Homebrew/test/bundle/skipper_spec.rb index ec93ca8a2a..1e0049b1ff 100644 --- a/Library/Homebrew/test/bundle/skipper_spec.rb +++ b/Library/Homebrew/test/bundle/skipper_spec.rb @@ -2,6 +2,8 @@ require "ostruct" require "bundle" +require "bundle/skipper" +require "bundle/dsl" RSpec.describe Homebrew::Bundle::Skipper do subject(:skipper) { described_class } diff --git a/Library/Homebrew/test/bundle/tap_dumper_spec.rb b/Library/Homebrew/test/bundle/tap_dumper_spec.rb index 5d4c09c9b7..226272d781 100644 --- a/Library/Homebrew/test/bundle/tap_dumper_spec.rb +++ b/Library/Homebrew/test/bundle/tap_dumper_spec.rb @@ -1,6 +1,8 @@ # frozen_string_literal: true require "bundle" +require "bundle/skipper" +require "bundle/tap_dumper" RSpec.describe Homebrew::Bundle::TapDumper do subject(:dumper) { described_class } diff --git a/Library/Homebrew/test/bundle/tap_installer_spec.rb b/Library/Homebrew/test/bundle/tap_installer_spec.rb index 70c34fc251..e49e90dee8 100644 --- a/Library/Homebrew/test/bundle/tap_installer_spec.rb +++ b/Library/Homebrew/test/bundle/tap_installer_spec.rb @@ -1,6 +1,8 @@ # frozen_string_literal: true require "bundle" +require "bundle/tap_installer" +require "bundle/tap_dumper" RSpec.describe Homebrew::Bundle::TapInstaller do describe ".installed_taps" do diff --git a/Library/Homebrew/test/bundle/vscode_extension_installer_spec.rb b/Library/Homebrew/test/bundle/vscode_extension_installer_spec.rb index db9a4634a9..a0371f761f 100644 --- a/Library/Homebrew/test/bundle/vscode_extension_installer_spec.rb +++ b/Library/Homebrew/test/bundle/vscode_extension_installer_spec.rb @@ -1,6 +1,7 @@ # frozen_string_literal: true require "bundle" +require "bundle/vscode_extension_installer" require "extend/kernel" RSpec.describe Homebrew::Bundle::VscodeExtensionInstaller do diff --git a/Library/Homebrew/test/bundle/whalebrew_dumper_spec.rb b/Library/Homebrew/test/bundle/whalebrew_dumper_spec.rb index 3f6b9157fb..0a9ce0659b 100644 --- a/Library/Homebrew/test/bundle/whalebrew_dumper_spec.rb +++ b/Library/Homebrew/test/bundle/whalebrew_dumper_spec.rb @@ -1,6 +1,7 @@ # frozen_string_literal: true require "bundle" +require "bundle/whalebrew_dumper" RSpec.describe Homebrew::Bundle::WhalebrewDumper do subject(:dumper) { described_class } diff --git a/Library/Homebrew/test/bundle/whalebrew_installer_spec.rb b/Library/Homebrew/test/bundle/whalebrew_installer_spec.rb index 4e9528c14c..7ffe5975f8 100644 --- a/Library/Homebrew/test/bundle/whalebrew_installer_spec.rb +++ b/Library/Homebrew/test/bundle/whalebrew_installer_spec.rb @@ -1,6 +1,7 @@ # frozen_string_literal: true require "bundle" +require "bundle/whalebrew_installer" RSpec.describe Homebrew::Bundle::WhalebrewInstaller do before do