Method: Pod::Swift::ProjectPackages#resolve_recursive_targets_of

Defined in:
lib/cocoapods-spm/swift/package/project_packages.rb

#resolve_recursive_targets_of(pkg_name, product_name, platform: nil) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/cocoapods-spm/swift/package/project_packages.rb', line 15

def resolve_recursive_targets_of(pkg_name, product_name, platform: nil)
  @recursive_targets_cache ||= {}
  @recursive_targets_cache[platform] ||= {}
  return @recursive_targets_cache[platform][product_name] if @recursive_targets_cache[platform].key(product_name)

  res = []
  to_visit = pkg_desc_of(pkg_name).targets_of_product(product_name)
  until to_visit.empty?
    target = to_visit.pop
    res << target
    # Exclude macros as they wont be linked to the project's binary
    # https://github.com/trinhngocthuyen/cocoapods-spm/issues/107
    to_visit += target.resolve_dependencies(@pkg_desc_cache, platform: platform).reject(&:macro?)
  end
  @recursive_targets_cache[platform][product_name] = res.uniq(&:name)
end