Class: TRuby::DependencyResolver

Inherits:
Object
  • Object
show all
Defined in:
lib/t_ruby/package_manager.rb

Overview

Dependency resolver

Instance Attribute Summary collapse

Instance Method Summary collapse

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

#conflictsObject (readonly)

Returns the value of attribute conflicts.



188
189
190
# File 'lib/t_ruby/package_manager.rb', line 188

def conflicts
  @conflicts
end

#resolvedObject (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