class Bundler::Graph
def populate
def populate return if @populated # hash of name => GraphNode @nodes = {} @groups = {} # Populate @nodes @env.specs.each { |spec| @nodes[spec.name] = GraphNode.new(spec.name, spec.version) } # For gems in Gemfile, add details @env.current_dependencies.each do |dependency| next unless node = @nodes[dependency.name] node.is_user = true dependency.groups.each do |group| if @groups.has_key? group group = @groups[group] else group = @groups[group] = [] end group << dependency end end # walk though a final time and add edges @env.specs.each do |spec| from = @nodes[spec.name] spec.runtime_dependencies.each do |dependency| from.dependencies << dependency end end @nodes.freeze @groups.freeze @populated = true end