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