Class: TRuby::DependencyResolver
- Inherits:
-
Object
- Object
- TRuby::DependencyResolver
- Defined in:
- lib/t_ruby/package_manager.rb
Overview
Dependency resolver
Instance Attribute Summary collapse
-
#conflicts ⇒ Object
readonly
Returns the value of attribute conflicts.
-
#resolved ⇒ Object
readonly
Returns the value of attribute resolved.
Instance Method Summary collapse
-
#check_circular(manifest) ⇒ Object
Check for circular dependencies.
-
#initialize(registry = nil) ⇒ DependencyResolver
constructor
A new instance of DependencyResolver.
-
#resolve(manifest) ⇒ Object
Resolve all dependencies for a manifest.
Constructor Details
#initialize(registry = nil) ⇒ DependencyResolver
Returns a new instance of DependencyResolver.
190 191 192 193 194 195 |
# File 'lib/t_ruby/package_manager.rb', line 190 def initialize(registry = nil) @registry = registry || PackageRegistry.new @resolved = {} @conflicts = [] @in_progress = Set.new end |
Instance Attribute Details
#conflicts ⇒ Object (readonly)
Returns the value of attribute conflicts.
188 189 190 |
# File 'lib/t_ruby/package_manager.rb', line 188 def conflicts @conflicts end |
#resolved ⇒ Object (readonly)
Returns the value of attribute resolved.
188 189 190 |
# File 'lib/t_ruby/package_manager.rb', line 188 def resolved @resolved end |
Instance Method Details
#check_circular(manifest) ⇒ Object
Check for circular dependencies
210 211 212 213 214 215 |
# File 'lib/t_ruby/package_manager.rb', line 210 def check_circular(manifest) visited = Set.new path = [] check_circular_recursive(manifest.name, manifest.dependencies, visited, path) end |
#resolve(manifest) ⇒ Object
Resolve all dependencies for a manifest
198 199 200 201 202 203 204 205 206 207 |
# File 'lib/t_ruby/package_manager.rb', line 198 def resolve(manifest) @resolved = {} @conflicts = [] manifest.dependencies.each do |name, version_constraint| resolve_package(name, version_constraint) end { resolved: @resolved, conflicts: @conflicts } end |