summaryrefslogtreecommitdiff
path: root/lib/bundler/spec_set.rb
diff options
context:
space:
mode:
-rw-r--r--lib/bundler/spec_set.rb42
1 files changed, 35 insertions, 7 deletions
@@ -37,7 +37,7 @@ module Bundler
specs_for_dep.first.dependencies.each do |d|
next if d.type == :development
- incomplete = true if d.name != "bundler" && lookup[d.name].empty?
deps << [d, dep[1]]
end
else
@@ -45,7 +45,7 @@ module Bundler
end
if incomplete && check
- @incomplete_specs += lookup[name].any? ? lookup[name] : [LazySpecification.new(name, nil, nil)]
end
end
@@ -64,7 +64,9 @@ module Bundler
valid_platform = lookup.all? do |_, specs|
spec = specs.first
matching_specs = spec.source.specs.search([spec.name, spec.version])
- platform_spec = GemHelpers.select_best_platform_match(matching_specs, platform).find(&:matches_current_metadata?)
if platform_spec
new_specs << LazySpecification.from_spec(platform_spec)
@@ -90,9 +92,20 @@ module Bundler
platforms
end
def [](key)
key = key.name if key.respond_to?(:name)
- lookup[key].reverse
end
def []=(key, value)
@@ -167,7 +180,7 @@ module Bundler
end
def what_required(spec)
- unless req = find {|s| s.dependencies.any? {|d| d.type == :runtime && d.name == spec.name } }
return [spec]
end
what_required(req) << spec
@@ -193,8 +206,16 @@ module Bundler
sorted.each(&b)
end
private
def sorted
rake = @specs.find {|s| s.name == "rake" }
begin
@@ -213,8 +234,9 @@ module Bundler
def lookup
@lookup ||= begin
- lookup = Hash.new {|h, k| h[k] = [] }
@specs.each do |s|
lookup[s.name] << s
end
lookup
@@ -228,6 +250,8 @@ module Bundler
def specs_for_dependency(dep, platform)
specs_for_name = lookup[dep.name]
matching_specs = if dep.force_ruby_platform
GemHelpers.force_ruby_platform(specs_for_name)
else
@@ -240,7 +264,11 @@ module Bundler
def tsort_each_child(s)
s.dependencies.sort_by(&:name).each do |d|
next if d.type == :development
- lookup[d.name].each {|s2| yield s2 }
end
end
end