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
This commit is contained in:
apainintheneck 2023-08-24 21:18:24 -07:00
parent 3cba4cbc19
commit e314a43754
3 changed files with 15 additions and 16 deletions

View File

@ -90,7 +90,8 @@ module Homebrew
!args.include_build? && !args.include_build? &&
!args.include_test? && !args.include_test? &&
!args.include_optional? && !args.include_optional? &&
!args.skip_recommended? !args.skip_recommended? &&
!args.missing?
if args.tree? || args.graph? if args.tree? || args.graph?
dependents = if args.named.present? dependents = if args.named.present?
@ -197,8 +198,8 @@ module Homebrew
deps ||= recursive_includes(Dependency, dependency, includes, ignores) deps ||= recursive_includes(Dependency, dependency, includes, ignores)
reqs = recursive_includes(Requirement, dependency, includes, ignores) reqs = recursive_includes(Requirement, dependency, includes, ignores)
else else
deps ||= reject_ignores(dependency.deps, ignores, includes) deps ||= select_includes(dependency.deps, ignores, includes)
reqs = reject_ignores(dependency.requirements, ignores, includes) reqs = select_includes(dependency.requirements, ignores, includes)
end end
deps + reqs.to_a deps + reqs.to_a
@ -269,8 +270,8 @@ module Homebrew
def self.dependables(formula, args:) def self.dependables(formula, args:)
includes, ignores = args_includes_ignores(args) includes, ignores = args_includes_ignores(args)
deps = @use_runtime_dependencies ? formula.runtime_dependencies : formula.deps deps = @use_runtime_dependencies ? formula.runtime_dependencies : formula.deps
deps = reject_ignores(deps, ignores, includes) deps = select_includes(deps, ignores, includes)
reqs = reject_ignores(formula.requirements, ignores, includes) if args.include_requirements? reqs = select_includes(formula.requirements, ignores, includes) if args.include_requirements?
reqs ||= [] reqs ||= []
reqs + deps reqs + deps
end end

View File

@ -129,7 +129,7 @@ module Homebrew
deps = if recursive deps = if recursive
recursive_includes(Dependency, d, includes, ignores) recursive_includes(Dependency, d, includes, ignores)
else else
reject_ignores(d.deps, ignores, includes) select_includes(d.deps, ignores, includes)
end end
used_formulae.all? do |ff| used_formulae.all? do |ff|

View File

@ -8,7 +8,7 @@ require "cask_dependent"
# @api private # @api private
module DependenciesHelpers module DependenciesHelpers
def args_includes_ignores(args) def args_includes_ignores(args)
includes = [:recommended?] # included by default includes = [:required?, :recommended?] # included by default
includes << :build? if args.include_build? includes << :build? if args.include_build?
includes << :test? if args.include_test? includes << :test? if args.include_test?
includes << :optional? if args.include_optional? includes << :optional? if args.include_optional?
@ -26,14 +26,12 @@ module DependenciesHelpers
cache_key = "recursive_includes_#{includes}_#{ignores}" cache_key = "recursive_includes_#{includes}_#{ignores}"
klass.expand(root_dependent, cache_key: cache_key) do |dependent, dep| klass.expand(root_dependent, cache_key: cache_key) do |dependent, dep|
klass.prune if ignores.any? { |ignore| dep.send(ignore) } klass.prune if ignores.any? { |ignore| dep.public_send(ignore) }
klass.prune if includes.none? do |include|
# NOTE: Untagged dependencies are runtime dependencies and are included by default.
klass.prune if !dep.tags.empty? && includes.none? do |include|
# Ignore indirect test dependencies # Ignore indirect test dependencies
next if include == :test? && dependent != root_dependent next if include == :test? && dependent != root_dependent
dep.send(include) dep.public_send(include)
end end
# If a tap isn't installed, we can't find the dependencies of one of # If a tap isn't installed, we can't find the dependencies of one of
@ -42,11 +40,11 @@ module DependenciesHelpers
end end
end end
def reject_ignores(dependables, ignores, includes) def select_includes(dependables, ignores, includes)
dependables.reject do |dep| dependables.select do |dep|
next false unless ignores.any? { |ignore| dep.send(ignore) } 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
end end