Class: Richcss::Resolver

Inherits:
Object
  • Object
show all
Defined in:
lib/richcss/resolver.rb

Class Method Summary collapse

Class Method Details

.start(part_name, version, installed = {}) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/richcss/resolver.rb', line 7

def self.start(part_name, version, installed = {})
  requirements = [VersionKit::Dependency.new(part_name, version)]
  installed.each do | p, v |
    requirements.push(VersionKit::Dependency.new(p, v))
  end
  @resolver = Molinillo::Resolver.new(RichSpecificationProvider.new(part_name, version), RichUI.new)
  @base_dg = Molinillo::DependencyGraph.new
  dg = @resolver.resolve(requirements, @base_dg)
  puts "Succesfully resolved dependencies:\n"
  dg.map(&:payload).flatten
rescue Molinillo::VersionConflict => e
  puts e
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."
end