class ChefCLI::Policyfile::IncludedPoliciesCookbookSource

def build_universe

def build_universe
  included_policy_location_specs.inject({}) do |acc, policy_spec|
    lock = policy_spec.policyfile_lock
    cookbook_dependencies = lock.solution_dependencies.cookbook_dependencies
    cookbook_dependencies.each do |(cookbook, deps)|
      name = cookbook.name
      version = cookbook.version
      mapped_deps = deps.map do |dep|
        [dep[0], dep[1].to_s]
      end
      if acc[name]
        if acc[name][version]
          if acc[name][version] != mapped_deps
            raise ConflictingCookbookDependencies.new("Conflicting dependencies provided for cookbook #{name}")
          end
        else
          raise ConflictingCookbookVersions.new("Multiple versions provided for cookbook #{name}")
        end
      else
        acc[name] = {}
        acc[name][version] = mapped_deps
      end
    end
    acc
  end
end