Method: Licensed::Sources::Cabal#recursive_dependencies

Defined in:
lib/licensed/sources/cabal.rb

#recursive_dependencies(package_names, results = Set.new) ⇒ Object

Recursively finds the dependencies for each cabal package. Returns a ‘Set` containing the package names for all dependencies



87
88
89
90
91
92
93
94
95
96
97
98
99
# File 'lib/licensed/sources/cabal.rb', line 87

def recursive_dependencies(package_names, results = Set.new)
  return results if package_names.nil? || package_names.empty?

  new_packages = Set.new(package_names) - results
  return results if new_packages.empty?

  results.merge new_packages

  dependencies = Parallel.map(new_packages, &method(:package_dependencies)).flatten

  recursive_dependencies(dependencies, results)
  results
end