aboutsummaryrefslogtreecommitdiffstats
path: root/lib/bundler
diff options
context:
space:
mode:
authorCarl Lerche <carllerche@mac.com>2010-06-04 13:03:51 -0700
committerCarl Lerche <carllerche@mac.com>2010-06-04 13:03:51 -0700
commit0ccfdd8e49a4641edad0dcde5d4111bad06c8e00 (patch)
treea6290d4991607db13c17286426845490811f4205 /lib/bundler
parent60df08e450991c226b643abd515233c5aef37098 (diff)
downloadbundler-0ccfdd8e49a4641edad0dcde5d4111bad06c8e00.tar.gz
Tweak Definition
Diffstat (limited to 'lib/bundler')
-rw-r--r--lib/bundler/definition.rb30
1 files changed, 16 insertions, 14 deletions
diff --git a/lib/bundler/definition.rb b/lib/bundler/definition.rb
index ad9e5903..a1a7f43f 100644
--- a/lib/bundler/definition.rb
+++ b/lib/bundler/definition.rb
@@ -37,12 +37,12 @@ module Bundler
locked = LockfileParser.new(File.read(lockfile))
@platforms = locked.platforms
@locked_deps = locked.dependencies
- @locked_specs = SpecSet.new(locked.specs)
+ @last_resolve = SpecSet.new(locked.specs)
@locked_sources = locked.sources
else
@platforms = []
@locked_deps = []
- @locked_specs = SpecSet.new([])
+ @last_resolve = SpecSet.new([])
@locked_sources = []
end
@@ -61,9 +61,9 @@ module Bundler
@specs ||= resolve_local_specs
end
- def locked_specs
- resolve_local_specs unless @locked_specs
- @locked_specs
+ def last_resolve
+ resolve_local_specs unless @specs
+ @last_resolve
end
def index
@@ -95,7 +95,7 @@ module Bundler
# Add the source header
out << source.to_lock
# Find all specs for this source
- locked_specs.
+ last_resolve.
select { |s| s.source == source }.
sort_by { |s| s.name }.
each do |spec|
@@ -154,15 +154,17 @@ module Bundler
end
end
- @locked_specs = @locked_specs.for(deps, @unlock[:gems] || [])
+ converged = @last_resolve.for(deps, @unlock[:gems] || []).to_a
- @locked_specs.each do |s|
+ converged.each do |s|
s.source = @sources.find { |source| s.source == source }
end
- @locked_specs.delete_if do |s|
+ converged.delete_if do |s|
s.source.nil? || (@unlock[:sources] || []).include?(s.name)
end
+
+ @last_resolve = SpecSet.new(converged)
end
def in_locked_deps?(dep)
@@ -172,7 +174,7 @@ module Bundler
end
def satisfies_locked_spec?(dep)
- @locked_specs.any? { |s| s.satisfies?(dep) }
+ @last_resolve.any? { |s| s.satisfies?(dep) }
end
def sorted_sources
@@ -190,21 +192,21 @@ module Bundler
end
# Run a resolve against the locally available gems
- resolve = Resolver.resolve(dependencies, idx, source_requirements, @locked_specs, platforms)
+ resolve = Resolver.resolve(dependencies, idx, source_requirements, @last_resolve, platforms)
[resolve, resolve.__materialize__(type)]
end
def resolve_local_specs
- @locked_specs, @specs = resolve(:local_specs, index)
+ @last_resolve, @specs = resolve(:local_specs, index)
@specs
end
# TODO: Improve this logic
def resolve_remote_specs
- raise "lol" unless @locked_specs.valid_for?(dependencies)
+ raise "lol" unless @last_resolve.valid_for?(dependencies)
resolve_local_specs
rescue #InvalidSpecSet, GemNotFound, PathError
- @locked_specs, @specs = resolve(:specs, remote_index)
+ @last_resolve, @specs = resolve(:specs, remote_index)
@specs
end
end