Method: Lyp::DependencyResolver#dependencies_array

Defined in:
lib/lyp/resolver.rb

#dependencies_array(leaf, processed = {}) ⇒ Object

Converts a simplified dependency tree into an array of dependencies, containing a sub-array for each top-level dependency. Each such sub-array contains, in its turn, version permutations for the top-level dependency and any transitive dependencies.



300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
# File 'lib/lyp/resolver.rb', line 300

def dependencies_array(leaf, processed = {})
  return processed[leaf] if processed[leaf]

  deps_array = []
  processed[leaf] = deps_array

  leaf.each do |pack, versions|
    a = []
    versions.each do |version, deps|
      perms = []
      sub_perms = dependencies_array(deps, processed)
      if sub_perms == []
        perms += [version]
      else
        sub_perms[0].each do |perm|
          perms << [version] + [perm].flatten
        end
      end
      a += perms
    end
    deps_array << a
  end

  deps_array
end