class Richcss::Resolver
Public Class Methods
start(part_name, version, installed = {})
click to toggle source
# File lib/richcss/resolver.rb, line 7 def self.start(part_name, version, installed = {}) installed_deps = [] installed.each do | p, v | installed_deps.push(VersionKit::Dependency.new(p, v)) end @resolver = Molinillo::Resolver.new(RichSpecificationProvider.new(part_name, version), RichUI.new) @base_dg = Molinillo::DependencyGraph.new installed_deps.each { |dep| @base_dg.add_vertex dep.name, dep } requirements = [VersionKit::Dependency.new(part_name, version)] dg = @resolver.resolve(requirements, @base_dg) puts "Succesfully resolved dependencies\n" new_deps = dg.map(&:payload).flatten new_deps.each { |dep| installed[dep.name] = dep.version } return installed rescue Molinillo::VersionConflict => e puts e return nil rescue Molinillo::CircularDependencyError => e names = e.dependencies.sort_by(&:name).map {|d| "gem '#{d.name}'" } puts "Your RichCSS part requires parts that depend" \ " on each other, creating an circular loop. Please remove" \ " #{names.count > 1 ? "either " : ""}#{names.join(" or ")}" \ " and try again." return nil end