From 10ae9bcde728148ffed445f976cb06d3cf08e65d Mon Sep 17 00:00:00 2001 From: Tie Date: Wed, 4 Nov 2020 15:59:50 -0500 Subject: [PATCH] modify autoremove to use uninstall --- Library/Homebrew/cmd/autoremove.rb | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/Library/Homebrew/cmd/autoremove.rb b/Library/Homebrew/cmd/autoremove.rb index f02712e94b..de6c704e43 100644 --- a/Library/Homebrew/cmd/autoremove.rb +++ b/Library/Homebrew/cmd/autoremove.rb @@ -2,8 +2,11 @@ require "formula" require "cli/parser" +require "uninstall" module Homebrew + extend Uninstall + module_function def autoremove_args @@ -19,17 +22,13 @@ module Homebrew end end - def get_removable_formulae(installed_formulae) - removable_formulae = [] + def get_removable_formulae(formulae) + removable_formulae = Formula.installed_non_deps(formulae).reject { + |f| Tab.for_keg(f.any_installed_keg).installed_on_request + } - installed_formulae.each do |formula| - # Reject formulae installed on request. - next if Tab.for_keg(formula.any_installed_keg).installed_on_request - # Reject formulae which are needed at runtime by other formulae. - next if installed_formulae.flat_map(&:runtime_formula_dependencies).include?(formula) - - removable_formulae << installed_formulae.delete(formula) - removable_formulae += get_removable_formulae(installed_formulae) + if removable_formulae.any? + removable_formulae += get_removable_formulae(formulae - removable_formulae) end removable_formulae @@ -38,17 +37,18 @@ module Homebrew def autoremove args = autoremove_args.parse - removable_formulae = get_removable_formulae(Formula.installed.sort) + removable_formulae = get_removable_formulae(Formula.installed) return if removable_formulae.blank? - formulae_names = removable_formulae.map(&:full_name) + formulae_names = removable_formulae.map(&:full_name).sort oh1 "Formulae that could be removed" puts formulae_names - + return if args.dry_run? - system HOMEBREW_BREW_FILE, "rm", *formulae_names + kegs_by_rack = removable_formulae.map(&:any_installed_keg).group_by(&:rack) + uninstall_kegs(kegs_by_rack) end end