class Bundler::Resolver::SpecGroup
def __dependencies
def __dependencies @dependencies = Hash.new do |dependencies, platform| dependencies[platform] = [] if spec = @specs[platform] spec.dependencies.each do |dep| next if dep.type == :development dependencies[platform] << DepProxy.new(dep, platform) end end dependencies[platform] end end
def activate_platform!(platform)
def activate_platform!(platform) return unless for?(platform) return if @activated_platforms.include?(platform) @activated_platforms << platform end
def dependencies_for_activated_platforms
def dependencies_for_activated_platforms dependencies = @activated_platforms.map {|p| __dependencies[p] } metadata_dependencies = @activated_platforms.map do |platform| metadata_dependencies(@specs[platform], platform) end dependencies.concat(metadata_dependencies).flatten end
def for?(platform)
def for?(platform) spec = @specs[platform] !spec.nil? end
def initialize(a)
def initialize(a) super @required_by = [] @activated_platforms = [] @dependencies = nil @specs = Hash.new do |specs, platform| specs[platform] = select_best_platform_match(self, platform) end end
def initialize_copy(o)
def initialize_copy(o) super @activated_platforms = o.activated.dup end
def metadata_dependencies(spec, platform)
def metadata_dependencies(spec, platform) return [] unless spec # Only allow endpoint specifications since they won't hit the network to # fetch the full gemspec when calling required_ruby_version return [] if !spec.is_a?(EndpointSpecification) && !spec.is_a?(Gem::Specification) dependencies = [] if !spec.required_ruby_version.nil? && !spec.required_ruby_version.none? dependencies << DepProxy.new(Gem::Dependency.new("ruby\0", spec.required_ruby_version), platform) end if !spec.required_rubygems_version.nil? && !spec.required_rubygems_version.none? dependencies << DepProxy.new(Gem::Dependency.new("rubygems\0", spec.required_rubygems_version), platform) end dependencies end
def name
def name @name ||= first.name end
def platforms_for_dependency_named(dependency)
def platforms_for_dependency_named(dependency) __dependencies.select {|_, deps| deps.map(&:name).include? dependency }.keys end
def source
def source @source ||= first.source end
def to_s
def to_s "#{name} (#{version})" end
def to_specs
def to_specs @activated_platforms.map do |p| next unless s = @specs[p] lazy_spec = LazySpecification.new(name, version, s.platform, source) lazy_spec.dependencies.replace s.dependencies lazy_spec end.compact end
def version
def version @version ||= first.version end