Class: Orca::Resolver
- Inherits:
-
Object
- Object
- Orca::Resolver
- Defined in:
- lib/orca/resolver.rb
Defined Under Namespace
Classes: CircularDependancyError
Instance Attribute Summary collapse
-
#packages ⇒ Object
readonly
Returns the value of attribute packages.
-
#tree ⇒ Object
readonly
Returns the value of attribute tree.
Instance Method Summary collapse
- #add_children ⇒ Object
-
#initialize(package) ⇒ Resolver
constructor
A new instance of Resolver.
- #resolve ⇒ Object
Constructor Details
#initialize(package) ⇒ Resolver
Returns a new instance of Resolver.
3 4 5 6 7 8 |
# File 'lib/orca/resolver.rb', line 3 def initialize(package) @package = package @last_seen = package @tree = [@package] @packages = [] end |
Instance Attribute Details
#packages ⇒ Object (readonly)
Returns the value of attribute packages.
2 3 4 |
# File 'lib/orca/resolver.rb', line 2 def packages @packages end |
#tree ⇒ Object (readonly)
Returns the value of attribute tree.
2 3 4 |
# File 'lib/orca/resolver.rb', line 2 def tree @tree end |
Instance Method Details
#add_children ⇒ Object
24 25 26 27 28 29 30 31 32 33 |
# File 'lib/orca/resolver.rb', line 24 def add_children @packages = @packages.reduce([]) do |arr, package| arr << package package.children.each do |child_name| child = Orca::PackageIndex.default.get(child_name) arr << child unless arr.include?(child) end arr end end |
#resolve ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/orca/resolver.rb', line 10 def resolve dependancies = @package.dependancies.reverse.map { |d| Orca::PackageIndex.default.get(d) } begin @tree += dependancies.map {|d| Orca::Resolver.new(d).resolve.tree } rescue SystemStackError raise CircularDependancyError.new end @packages = @tree.flatten @packages.reverse! @packages.uniq! add_children self end |