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