From f2cb33011af1fe4deb99c8ccb6746a25e755bd2c Mon Sep 17 00:00:00 2001 From: Ruoyu Zhong Date: Mon, 8 Apr 2024 23:30:05 +0800 Subject: [PATCH] uninstall: don't ignore deps even for developers This was discussed a while back on Slack. The idea behind this is that ignoring dependencies during `brew uninstall` makes it too easy to break things, even for developers. Those who know what they are doing can, and IMO should, always use the `--ignore-dependencies` flag. --- Library/Homebrew/test/uninstall_spec.rb | 14 ++-------- Library/Homebrew/uninstall.rb | 37 +++++++------------------ 2 files changed, 12 insertions(+), 39 deletions(-) diff --git a/Library/Homebrew/test/uninstall_spec.rb b/Library/Homebrew/test/uninstall_spec.rb index 530a687310..30ecd504b1 100644 --- a/Library/Homebrew/test/uninstall_spec.rb +++ b/Library/Homebrew/test/uninstall_spec.rb @@ -47,17 +47,7 @@ RSpec.describe Homebrew::Uninstall do end describe "::handle_unsatisfied_dependents" do - specify "when developer" do - ENV["HOMEBREW_DEVELOPER"] = "1" - - expect do - described_class.handle_unsatisfied_dependents(kegs_by_rack) - end.to output(/Warning/).to_stderr - - expect(Homebrew).not_to have_failed - end - - specify "when not developer" do + specify "when `ignore_dependencies` is false" do expect do described_class.handle_unsatisfied_dependents(kegs_by_rack) end.to output(/Error/).to_stderr @@ -65,7 +55,7 @@ RSpec.describe Homebrew::Uninstall do expect(Homebrew).to have_failed end - specify "when not developer and `ignore_dependencies` is true" do + specify "when `ignore_dependencies` is true" do expect do described_class.handle_unsatisfied_dependents(kegs_by_rack, ignore_dependencies: true) end.not_to output.to_stderr diff --git a/Library/Homebrew/uninstall.rb b/Library/Homebrew/uninstall.rb index fd14e8ce8d..ba03abc04f 100644 --- a/Library/Homebrew/uninstall.rb +++ b/Library/Homebrew/uninstall.rb @@ -106,12 +106,7 @@ module Homebrew def self.check_for_dependents(kegs, casks: [], named_args: []) return false unless (result = InstalledDependents.find_some_installed_dependents(kegs, casks:)) - if Homebrew::EnvConfig.developer? - DeveloperDependentsMessage.new(*result, named_args:).output - else - NondeveloperDependentsMessage.new(*result, named_args:).output - end - + DependentsMessage.new(*result, named_args:).output true end @@ -124,6 +119,15 @@ module Homebrew @named_args = named_args end + def output + ofail <<~EOS + Refusing to uninstall #{reqs.to_sentence} + because #{(reqs.count == 1) ? "it" : "they"} #{are_required_by_deps}. + You can override this and force removal with: + #{sample_command} + EOS + end + protected def sample_command @@ -136,27 +140,6 @@ module Homebrew end end - class DeveloperDependentsMessage < DependentsMessage - def output - opoo <<~EOS - #{reqs.to_sentence} #{are_required_by_deps}. - You can silence this warning with: - #{sample_command} - EOS - end - end - - class NondeveloperDependentsMessage < DependentsMessage - def output - ofail <<~EOS - Refusing to uninstall #{reqs.to_sentence} - because #{(reqs.count == 1) ? "it" : "they"} #{are_required_by_deps}. - You can override this and force removal with: - #{sample_command} - EOS - end - end - def self.rm_pin(rack) Formulary.from_rack(rack).unpin rescue