class PuppetfileResolver::Resolver
Attributes
dependencies_to_resolve[R]
puppetfile[R]
Public Class Methods
new(puppetfile_document, puppet_version = nil)
click to toggle source
# File lib/puppetfile-resolver/resolver.rb, line 13 def initialize(puppetfile_document, puppet_version = nil) @puppetfile = puppetfile_document raise 'Puppetfile is not valid' unless @puppetfile.valid? @puppet_version = puppet_version @dependencies_to_resolve = dependencies_from_puppetfile end
Public Instance Methods
resolve(options = {})
click to toggle source
options
:cache => Cache Object :module_paths => Array[String] (Deprecated) :spec_searcher_configuration => PuppetfileResolver::SpecSearchers::Configuration
# File lib/puppetfile-resolver/resolver.rb, line 25 def resolve(options = {}) if options[:ui] raise 'The UI object must be of type Molinillo::UI' unless options[:ui].is_a?(Molinillo::UI) ui = options[:ui] else require 'puppetfile-resolver/ui/null_ui' ui = PuppetfileResolver::UI::NullUI.new end provider = ResolutionProvider.new(@puppetfile, @puppet_version, ui, options) resolver = Molinillo::Resolver.new(provider, ui) begin result = resolver.resolve(dependencies_to_resolve) rescue Molinillo::VersionConflict => e # Wrap the Molinillo error new_e = PuppetfileResolver::Puppetfile::DocumentVersionConflictError.new(e) raise new_e, new_e.message, e.backtrace rescue Molinillo::CircularDependencyError => e # Wrap the Molinillo error new_e = PuppetfileResolver::Puppetfile::DocumentCircularDependencyError.new(@puppetfile, e) raise new_e, new_e.message, e.backtrace end ResolutionResult.new(result, @puppetfile) end
Private Instance Methods
dependencies_from_puppetfile()
click to toggle source
# File lib/puppetfile-resolver/resolver.rb, line 52 def dependencies_from_puppetfile result = [] @puppetfile.modules.each do |mod| # Use an open version unless we get a valid version number if mod.version.nil? || mod.version == :latest version = '>= 0' # Note the `>=` is important. Don't use `>` else version = mod.version end result << Models::PuppetfileDependency.new( name: mod.title, version_requirement: version, puppetfile_module: mod ) end # We also depend on Puppet, so add an open ended requirement if no version # was specified or add a strict version requirement if @puppet_version.nil? result << Models::PuppetDependency.new('>= 0') else result << Models::PuppetDependency.new(@puppet_version.to_s) end result end