class Bundler::Materialization
target platform.
(‘StubSepecification`, `EndpointSpecification`, etc), given a dependency and a
for a given gem into the most appropriate real specifications
This class materializes a set of resolved specifications (`LazySpecification`)
def complete?
def complete? specs.any? end
def completely_missing_specs
def completely_missing_specs return [] unless specs.all?(&:missing?) specs end
def dependencies
def dependencies specs.first.runtime_dependencies.map {|d| [d, platform] } end
def incomplete_specs
def incomplete_specs return [] if complete? @candidates || LazySpecification.new(dep.name, nil, nil) end
def initialize(dep, platform, candidates:)
def initialize(dep, platform, candidates:) @dep = dep @platform = platform @candidates = candidates end
def materialized_spec
def materialized_spec specs.reject(&:missing?).first&.materialization end
def partially_missing_specs
def partially_missing_specs specs.select(&:missing?) end
def specs
def specs @specs ||= if @candidates.nil? [] elsif platform MatchPlatform.select_best_platform_match(@candidates, platform, force_ruby: dep.force_ruby_platform) else MatchPlatform.select_best_local_platform_match(@candidates, force_ruby: dep.force_ruby_platform || dep.default_force_ruby_platform) end end