Pass args in uninstall instead of using global args.
This commit is contained in:
parent
b3eca532fc
commit
e14506e589
@ -30,7 +30,7 @@ module Homebrew
|
||||
end
|
||||
|
||||
def uninstall
|
||||
uninstall_args.parse
|
||||
args = uninstall_args.parse
|
||||
|
||||
if args.force?
|
||||
casks = []
|
||||
@ -54,7 +54,9 @@ module Homebrew
|
||||
kegs_by_rack = all_kegs.group_by(&:rack)
|
||||
end
|
||||
|
||||
handle_unsatisfied_dependents(kegs_by_rack)
|
||||
handle_unsatisfied_dependents(kegs_by_rack,
|
||||
ignore_dependencies: args.ignore_dependencies?,
|
||||
named_args: args.named)
|
||||
return if Homebrew.failed?
|
||||
|
||||
kegs_by_rack.each do |rack, kegs|
|
||||
@ -142,40 +144,41 @@ module Homebrew
|
||||
end
|
||||
end
|
||||
|
||||
def handle_unsatisfied_dependents(kegs_by_rack)
|
||||
return if args.ignore_dependencies?
|
||||
def handle_unsatisfied_dependents(kegs_by_rack, ignore_dependencies: false, named_args: [])
|
||||
return if ignore_dependencies
|
||||
|
||||
all_kegs = kegs_by_rack.values.flatten(1)
|
||||
check_for_dependents all_kegs
|
||||
check_for_dependents(all_kegs, named_args: named_args)
|
||||
rescue MethodDeprecatedError
|
||||
# Silently ignore deprecations when uninstalling.
|
||||
nil
|
||||
end
|
||||
|
||||
def check_for_dependents(kegs)
|
||||
def check_for_dependents(kegs, named_args: [])
|
||||
return false unless result = Keg.find_some_installed_dependents(kegs)
|
||||
|
||||
if Homebrew::EnvConfig.developer?
|
||||
DeveloperDependentsMessage.new(*result).output
|
||||
DeveloperDependentsMessage.new(*result, named_args: named_args).output
|
||||
else
|
||||
NondeveloperDependentsMessage.new(*result).output
|
||||
NondeveloperDependentsMessage.new(*result, named_args: named_args).output
|
||||
end
|
||||
|
||||
true
|
||||
end
|
||||
|
||||
class DependentsMessage
|
||||
attr_reader :reqs, :deps
|
||||
attr_reader :reqs, :deps, :named_args
|
||||
|
||||
def initialize(requireds, dependents)
|
||||
def initialize(requireds, dependents, named_args: [])
|
||||
@reqs = requireds
|
||||
@deps = dependents
|
||||
@named_args = named_args
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
def sample_command
|
||||
"brew uninstall --ignore-dependencies #{Array(Homebrew.args.named).join(" ")}"
|
||||
"brew uninstall --ignore-dependencies #{named_args.join(" ")}"
|
||||
end
|
||||
|
||||
def are_required_by_deps
|
||||
|
||||
@ -28,7 +28,7 @@ describe Homebrew do
|
||||
end
|
||||
end
|
||||
|
||||
let(:opts) { { dependency.rack => [Keg.new(dependency.installed_prefix)] } }
|
||||
let(:kegs_by_rack) { { dependency.rack => [Keg.new(dependency.installed_prefix)] } }
|
||||
|
||||
before do
|
||||
[dependency, dependent].each do |f|
|
||||
@ -53,7 +53,7 @@ describe Homebrew do
|
||||
ENV["HOMEBREW_DEVELOPER"] = "1"
|
||||
|
||||
expect {
|
||||
described_class.handle_unsatisfied_dependents(opts)
|
||||
described_class.handle_unsatisfied_dependents(kegs_by_rack)
|
||||
}.to output(/Warning/).to_stderr
|
||||
|
||||
expect(described_class).not_to have_failed
|
||||
@ -61,19 +61,15 @@ describe Homebrew do
|
||||
|
||||
specify "when not developer" do
|
||||
expect {
|
||||
described_class.handle_unsatisfied_dependents(opts)
|
||||
described_class.handle_unsatisfied_dependents(kegs_by_rack)
|
||||
}.to output(/Error/).to_stderr
|
||||
|
||||
expect(described_class).to have_failed
|
||||
end
|
||||
|
||||
specify "when not developer and --ignore-dependencies is specified" do
|
||||
described_class.args = described_class.args.dup if described_class.args.frozen?
|
||||
expect(described_class.args).to receive(:ignore_dependencies?).and_return(true)
|
||||
described_class.args.freeze
|
||||
|
||||
specify "when not developer and `ignore_dependencies` is true" do
|
||||
expect {
|
||||
described_class.handle_unsatisfied_dependents(opts)
|
||||
described_class.handle_unsatisfied_dependents(kegs_by_rack, ignore_dependencies: true)
|
||||
}.not_to output.to_stderr
|
||||
|
||||
expect(described_class).not_to have_failed
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user