Class: ElmInstall::Resolver
Overview
Resolves dependencies
Instance Attribute Summary collapse
-
#dependencies ⇒ Array<Dependency>
readonly
The dependencies.
Instance Method Summary collapse
-
#initialize(identifier) ⇒ Resolver
constructor
Initializes a resolver.
-
#resolve ⇒ Solve::Graph
Resolves the constraints for a version.
-
#resolve_dependencies(main, version) ⇒ Object
Resolves the dependencies of a dependency and version.
-
#resolve_dependency(dependency) ⇒ Object
Resolves the dependencies of a dependency.
Constructor Details
#initialize(identifier) ⇒ Resolver
Initializes a resolver
13 14 15 16 17 18 |
# File 'lib/elm_install/resolver.rb', line 13 def initialize(identifier) @graph = Solve::Graph.new @identifier = identifier @dependencies = {} self end |
Instance Attribute Details
#dependencies ⇒ Array<Dependency> (readonly)
Returns The dependencies.
5 6 7 |
# File 'lib/elm_install/resolver.rb', line 5 def dependencies @dependencies end |
Instance Method Details
#resolve ⇒ Solve::Graph
Resolves the constraints for a version
24 25 26 27 28 29 30 |
# File 'lib/elm_install/resolver.rb', line 24 def resolve @identifier.initial_dependencies.each do |dependency| resolve_dependency dependency end @graph end |
#resolve_dependencies(main, version) ⇒ Object
Resolves the dependencies of a dependency and version
60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/elm_install/resolver.rb', line 60 def resolve_dependencies(main, version) dependencies = @identifier.identify(main.source.fetch(version)) artifact = @graph.artifact main.name, version dependencies.each do |dependency| dependency.constraints.each do |constraint| artifact.depends dependency.name, constraint end resolve_dependency dependency end nil end |
#resolve_dependency(dependency) ⇒ Object
Resolves the dependencies of a dependency
38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/elm_install/resolver.rb', line 38 def resolve_dependency(dependency) return if @dependencies[dependency.name] @dependencies[dependency.name] ||= dependency dependency .source .versions(dependency.constraints) .each do |version| resolve_dependencies(dependency, version) end nil end |