Sha256: 1ef1901e6a2bde064268e4f7afbc1e6d7f10caab2cfa9322240736f25acb77a8

Contents?: true

Size: 1.68 KB

Versions: 3

Compression:

Stored size: 1.68 KB

Contents

module Berkshelf
  class Resolver
    class Graph < Solve::Graph
      # @param [Berkshelf::CookbookStore] store
      def populate_store(store = nil)
        store ||= Berkshelf::CookbookStore.instance

        store.cookbooks.each do |cookbook|
          artifacts(cookbook.cookbook_name, cookbook.version)

          cookbook.dependencies.each do |dependency, constraint|
            artifacts(cookbook.cookbook_name, cookbook.version).depends(dependency, constraint)
          end
        end
      end

      # Add dependencies of a locally cached cookbook to the graph
      #
      # @param [Berkshelf::CachedCookbook] cookbook
      #
      # @return [Hash]
      def populate_local(cookbook)
        name    = cookbook.cookbook_name
        version = cookbook.version

        artifacts(name, version)
        cookbook.dependencies.each do |dependency, constraint|
          artifacts(name, version).depends(dependency, constraint)
        end
      end

      # @param [Array<Berkshelf::Source>, Berkshelf::Source] sources
      def populate(sources)
        universe(sources).each do |cookbook|
          next if has_artifact?(cookbook.name, cookbook.version)

          artifacts(cookbook.name, cookbook.version)

          cookbook.dependencies.each do |dependency, constraint|
            artifacts(cookbook.name, cookbook.version).depends(dependency, constraint)
          end
        end
      end

      # @param [Array<Berkshelf::Source>, Berkshelf::Source] sources
      #
      # @return [Array<Berkshelf::RemoteCookbook>]
      def universe(sources)
        cookbooks = []
        Array(sources).each { |source| cookbooks = cookbooks | source.universe }
        cookbooks
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
berkshelf-3.0.0.beta8 lib/berkshelf/resolver/graph.rb
berkshelf-3.0.0.beta7 lib/berkshelf/resolver/graph.rb
berkshelf-3.0.0.beta6 lib/berkshelf/resolver/graph.rb