class Bundler::Resolver::SpecGroup
Attributes
ignores_bundler_dependencies[RW]
name[RW]
source[RW]
version[RW]
Public Class Methods
new(all_specs)
click to toggle source
# File lib/bundler/resolver/spec_group.rb, line 11 def initialize(all_specs) raise ArgumentError, "cannot initialize with an empty value" unless exemplary_spec = all_specs.first @name = exemplary_spec.name @version = exemplary_spec.version @source = exemplary_spec.source @activated_platforms = [] @dependencies = nil @specs = Hash.new do |specs, platform| specs[platform] = select_best_platform_match(all_specs, platform) end @ignores_bundler_dependencies = true end
Public Instance Methods
==(other)
click to toggle source
# File lib/bundler/resolver/spec_group.rb, line 57 def ==(other) return unless other.is_a?(SpecGroup) name == other.name && version == other.version && source == other.source end
activate_platform!(platform)
click to toggle source
# File lib/bundler/resolver/spec_group.rb, line 34 def activate_platform!(platform) return unless for?(platform) return if @activated_platforms.include?(platform) @activated_platforms << platform end
dependencies_for_activated_platforms()
click to toggle source
# File lib/bundler/resolver/spec_group.rb, line 49 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
eql?(other)
click to toggle source
# File lib/bundler/resolver/spec_group.rb, line 64 def eql?(other) name.eql?(other.name) && version.eql?(other.version) && source.eql?(other.source) end
for?(platform)
click to toggle source
# File lib/bundler/resolver/spec_group.rb, line 40 def for?(platform) spec = @specs[platform] !spec.nil? end
hash()
click to toggle source
# File lib/bundler/resolver/spec_group.rb, line 70 def hash to_s.hash ^ source.hash end
to_s()
click to toggle source
# File lib/bundler/resolver/spec_group.rb, line 45 def to_s @to_s ||= "#{name} (#{version})" end
to_specs()
click to toggle source
# File lib/bundler/resolver/spec_group.rb, line 25 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
Private Instance Methods
__dependencies()
click to toggle source
# File lib/bundler/resolver/spec_group.rb, line 76 def __dependencies @dependencies = Hash.new do |dependencies, platform| dependencies[platform] = [] if spec = @specs[platform] spec.dependencies.each do |dep| next if dep.type == :development next if @ignores_bundler_dependencies && dep.name == "bundler".freeze dependencies[platform] << DepProxy.new(dep, platform) end end dependencies[platform] end end
metadata_dependencies(spec, platform)
click to toggle source
# File lib/bundler/resolver/spec_group.rb, line 90 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