uninstall: clean up warnings

This commit is contained in:
Alyssa Ross 2016-11-14 13:09:40 +00:00
parent 14099ffaf3
commit c77040b346

View File

@ -87,36 +87,64 @@ module Homebrew
return false unless result = Keg.find_some_installed_dependents(kegs) return false unless result = Keg.find_some_installed_dependents(kegs)
if ARGV.homebrew_developer? if ARGV.homebrew_developer?
dependents_output_for_developers(*result) DeveloperDependentsMessage.new(*result).output
else else
dependents_output_for_nondevelopers(*result) NondeveloperDependentsMessage.new(*result).output
end end
true true
end end
def dependents_output_for_developers(requireds, dependents) class DependentsMessage
msg = requireds.join(", ") attr :reqs, :deps
msg << (requireds.count == 1 ? " is" : " are")
msg << " required by #{dependents.join(", ")}, which " def initialize(requireds, dependents)
msg << (dependents.count == 1 ? "is" : "are") @reqs = requireds
msg << " currently installed." @deps = dependents
msg << "\nYou can silence this warning with "
msg << "`brew uninstall --ignore-dependencies "
msg << "#{requireds.map(&:name).join(" ")}`."
opoo msg
end end
def dependents_output_for_nondevelopers(requireds, dependents) protected
msg = "Refusing to uninstall #{requireds.join(", ")} because "
msg << (requireds.count == 1 ? "it is" : "they are") def is(items)
msg << " required by #{dependents.join(", ")}, which " items.count == 1 ? "is" : "are"
msg << (dependents.count == 1 ? "is" : "are") end
msg << " currently installed."
msg << "\nYou can override this and force removal with " def it(items)
msg << "`brew uninstall --ignore-dependencies " items.count == 1 ? "it" : "they"
msg << "#{requireds.map(&:name).join(" ")}`." end
ofail msg
def list(items)
items.join(", ")
end
def sample_command
"brew uninstall --ignore-dependencies #{list reqs.map(&:name)}"
end
def is_required_by_deps
"#{is reqs} required by #{list deps}, which #{is deps} currently installed"
end
end
class DeveloperDependentsMessage < DependentsMessage
def output
opoo <<-EOS.undent
#{list reqs} #{is_required_by_deps}.
You can silence this warning with:
#{sample_command}
EOS
end
end
class NondeveloperDependentsMessage < DependentsMessage
def output
ofail <<-EOS.undent
Refusing to uninstall #{list reqs}
because #{it reqs} #{is_required_by_deps}.
You can override this and force removal with:
#{sample_command}
EOS
end
end end
def rm_pin(rack) def rm_pin(rack)