Module: CookbookDecompiler

Defined in:
lib/vagrant/cookbook_decompiler.rb

Class Method Summary collapse

Class Method Details

.resolve_dependencies(cookbook_names) ⇒ Object



50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/vagrant/cookbook_decompiler.rb', line 50

def CookbookDecompiler.resolve_dependencies(cookbook_names)


  # First level cookbooks are obviously included, so let's make them the starting set.
  cookbooks_to_be_returned = Set.new(cookbook_names)

  loop do
    # Next, find the second level cookbooks.
    second_set = Set.new()
    cookbooks_to_be_returned.each do |name|
      included_cookbooks = get_included_cookbooks(name)
      second_set = second_set.merge(included_cookbooks)
    end
    if second_set.subset? cookbooks_to_be_returned
      return cookbooks_to_be_returned
    else
      cookbooks_to_be_returned.merge(second_set)
    end
  end
  # If all second level cookbooks are already in the set, we're done.
  # otherwise we repeat, treating the second level cookbooks as first level.

end