Commit b1dc3f7c authored by Samuel E. Giddins's avatar Samuel E. Giddins

[Resolver] Extract valid_dependencies_for_target_from_node method

parent 3177b5c8
...@@ -68,20 +68,8 @@ module Pod ...@@ -68,20 +68,8 @@ module Pod
specs_by_target = {} specs_by_target = {}
podfile.target_definition_list.each do |target| podfile.target_definition_list.each do |target|
specs = target.dependencies.map(&:name).map do |name| specs = target.dependencies.map(&:name).map do |name|
matching_dependencies_from_node = lambda do |node|
dependency_nodes = node.outgoing_edges.select do |edge|
edge.requirements.any? do |dependency|
!dependency.from_subspec_dependency? ||
edge.destination.payload.available_platforms.any? { |p| target.platform.supports?(p) }
end
end.map(&:destination)
dependency_nodes + dependency_nodes.flat_map { |n| matching_dependencies_from_node.call(n) }
end
node = @activated.vertex_named(name) node = @activated.vertex_named(name)
matching_dependencies_from_node.call(node).to_a << node valid_dependencies_for_target_from_node(target, node) << node
end end
specs_by_target[target] = specs. specs_by_target[target] = specs.
...@@ -355,5 +343,24 @@ module Pod ...@@ -355,5 +343,24 @@ module Pod
"a minimum requirement of #{spec.available_platforms.join(' - ')}." "a minimum requirement of #{spec.available_platforms.join(' - ')}."
end end
end end
# Returns the target-appropriate nodes that are `successors` of `node`,
# rejecting those that are {Dependency#from_subspec_dependency?} and have
# and incompatible platform.
#
# @return [Array<Molinillo::DependencyGraph::Vertex>]
# An array of target-appropriate nodes whose `payload`s are
# dependencies for `target`.
#
def valid_dependencies_for_target_from_node(target, node)
dependency_nodes = node.outgoing_edges.select do |edge|
edge.requirements.any? do |dependency|
!dependency.from_subspec_dependency? ||
edge.destination.payload.available_platforms.any? { |p| target.platform.supports?(p) }
end
end.map(&:destination)
dependency_nodes + dependency_nodes.flat_map { |n| valid_dependencies_for_target_from_node(target, n) }
end
end end
end end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment