Class: MilkTea::PackageDependencySolver
- Inherits:
-
Object
- Object
- MilkTea::PackageDependencySolver
- Defined in:
- lib/milk_tea/packages/dependency_solver.rb
Defined Under Namespace
Instance Method Summary collapse
-
#initialize(source_resolver:, registry_metadata_provider: PackageRegistryMetadataProvider.new, locked_registry_versions: nil) ⇒ PackageDependencySolver
constructor
A new instance of PackageDependencySolver.
- #solve(path_or_manifest) ⇒ Object
Constructor Details
#initialize(source_resolver:, registry_metadata_provider: PackageRegistryMetadataProvider.new, locked_registry_versions: nil) ⇒ PackageDependencySolver
Returns a new instance of PackageDependencySolver.
19 20 21 22 23 |
# File 'lib/milk_tea/packages/dependency_solver.rb', line 19 def initialize(source_resolver:, registry_metadata_provider: PackageRegistryMetadataProvider.new, locked_registry_versions: nil) @source_resolver = source_resolver @registry_metadata_provider = @locked_registry_versions = normalize_locked_registry_versions(locked_registry_versions) end |
Instance Method Details
#solve(path_or_manifest) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/milk_tea/packages/dependency_solver.rb', line 25 def solve(path_or_manifest) root_manifest = path_or_manifest.is_a?(PackageManifest::DataView) ? path_or_manifest : PackageManifest.load(path_or_manifest) state = State.new( manifests_by_path: {}, selected_registry_versions: {}, processing_stack: [], ) resolved_state = visit_manifest(root_manifest, state, source: @source_resolver.source_for_manifest(root_manifest)) Solution.new(registry_versions: resolved_state.selected_registry_versions.transform_values(&:to_s).freeze) rescue PackageManifestError, PackageRegistryMetadataProviderError, PackageSourceResolverError, PackageVersionError => e raise PackageDependencySolverError, e. end |