From e314a43754847697467f8fe48da37c053e961886 Mon Sep 17 00:00:00 2001 From: apainintheneck Date: Thu, 24 Aug 2023 21:18:24 -0700 Subject: [PATCH] dependency_helpers: include required & use public_send - Use .required? instead of .tags.empty? - use .public_send - modify .reject_ignores to be .select_includes - checks ignores first now - Don't use runtime deps with --missing in `brew deps` command --- Library/Homebrew/cmd/deps.rb | 11 ++++++----- Library/Homebrew/cmd/uses.rb | 2 +- Library/Homebrew/dependencies_helpers.rb | 18 ++++++++---------- 3 files changed, 15 insertions(+), 16 deletions(-) diff --git a/Library/Homebrew/cmd/deps.rb b/Library/Homebrew/cmd/deps.rb index bfa63005c6..5ceee33107 100644 --- a/Library/Homebrew/cmd/deps.rb +++ b/Library/Homebrew/cmd/deps.rb @@ -90,7 +90,8 @@ module Homebrew !args.include_build? && !args.include_test? && !args.include_optional? && - !args.skip_recommended? + !args.skip_recommended? && + !args.missing? if args.tree? || args.graph? dependents = if args.named.present? @@ -197,8 +198,8 @@ module Homebrew deps ||= recursive_includes(Dependency, dependency, includes, ignores) reqs = recursive_includes(Requirement, dependency, includes, ignores) else - deps ||= reject_ignores(dependency.deps, ignores, includes) - reqs = reject_ignores(dependency.requirements, ignores, includes) + deps ||= select_includes(dependency.deps, ignores, includes) + reqs = select_includes(dependency.requirements, ignores, includes) end deps + reqs.to_a @@ -269,8 +270,8 @@ module Homebrew def self.dependables(formula, args:) includes, ignores = args_includes_ignores(args) deps = @use_runtime_dependencies ? formula.runtime_dependencies : formula.deps - deps = reject_ignores(deps, ignores, includes) - reqs = reject_ignores(formula.requirements, ignores, includes) if args.include_requirements? + deps = select_includes(deps, ignores, includes) + reqs = select_includes(formula.requirements, ignores, includes) if args.include_requirements? reqs ||= [] reqs + deps end diff --git a/Library/Homebrew/cmd/uses.rb b/Library/Homebrew/cmd/uses.rb index d10a45614b..e9dfcc277e 100644 --- a/Library/Homebrew/cmd/uses.rb +++ b/Library/Homebrew/cmd/uses.rb @@ -129,7 +129,7 @@ module Homebrew deps = if recursive recursive_includes(Dependency, d, includes, ignores) else - reject_ignores(d.deps, ignores, includes) + select_includes(d.deps, ignores, includes) end used_formulae.all? do |ff| diff --git a/Library/Homebrew/dependencies_helpers.rb b/Library/Homebrew/dependencies_helpers.rb index 390ccf65d9..64ead61a76 100644 --- a/Library/Homebrew/dependencies_helpers.rb +++ b/Library/Homebrew/dependencies_helpers.rb @@ -8,7 +8,7 @@ require "cask_dependent" # @api private module DependenciesHelpers def args_includes_ignores(args) - includes = [:recommended?] # included by default + includes = [:required?, :recommended?] # included by default includes << :build? if args.include_build? includes << :test? if args.include_test? includes << :optional? if args.include_optional? @@ -26,14 +26,12 @@ module DependenciesHelpers cache_key = "recursive_includes_#{includes}_#{ignores}" klass.expand(root_dependent, cache_key: cache_key) do |dependent, dep| - klass.prune if ignores.any? { |ignore| dep.send(ignore) } - - # NOTE: Untagged dependencies are runtime dependencies and are included by default. - klass.prune if !dep.tags.empty? && includes.none? do |include| + klass.prune if ignores.any? { |ignore| dep.public_send(ignore) } + klass.prune if includes.none? do |include| # Ignore indirect test dependencies next if include == :test? && dependent != root_dependent - dep.send(include) + dep.public_send(include) end # If a tap isn't installed, we can't find the dependencies of one of @@ -42,11 +40,11 @@ module DependenciesHelpers end end - def reject_ignores(dependables, ignores, includes) - dependables.reject do |dep| - next false unless ignores.any? { |ignore| dep.send(ignore) } + def select_includes(dependables, ignores, includes) + dependables.select do |dep| + next false if ignores.any? { |ignore| dep.public_send(ignore) } - includes.none? { |include| dep.send(include) } + includes.any? { |include| dep.public_send(include) } end end