lib/bundler/definition.rb in bundler-1.0.0.beta.9 vs lib/bundler/definition.rb in bundler-1.0.0.beta.10

- old
+ new

@@ -1,9 +1,11 @@ require "digest/sha1" module Bundler class Definition + include GemHelpers + attr_reader :dependencies, :platforms, :sources def self.build(gemfile, lockfile, unlock) unlock ||= {} gemfile = Pathname.new(gemfile).expand_path @@ -32,17 +34,27 @@ def initialize(lockfile, dependencies, sources, unlock) @dependencies, @sources, @unlock = dependencies, sources, unlock @remote = false @specs = nil + @lockfile_contents = "" - if lockfile && File.exists?(lockfile) && unlock != true - locked = LockfileParser.new(File.read(lockfile)) + if lockfile && File.exists?(lockfile) + @lockfile_contents = File.read(lockfile) + locked = LockfileParser.new(@lockfile_contents) @platforms = locked.platforms - @locked_deps = locked.dependencies - @last_resolve = SpecSet.new(locked.specs) - @locked_sources = locked.sources + + if unlock != true + @locked_deps = locked.dependencies + @last_resolve = SpecSet.new(locked.specs) + @locked_sources = locked.sources + else + @unlock = {} + @locked_deps = [] + @last_resolve = SpecSet.new([]) + @locked_sources = [] + end else @unlock = {} @platforms = [] @locked_deps = [] @last_resolve = SpecSet.new([]) @@ -50,11 +62,11 @@ end @unlock[:gems] ||= [] @unlock[:sources] ||= [] - current_platform = Gem.platforms.map { |p| p.to_generic }.compact.last + current_platform = Gem.platforms.map { |p| generic(p) }.compact.last @platforms |= [current_platform] converge end @@ -139,10 +151,20 @@ def groups dependencies.map { |d| d.groups }.flatten.uniq end + def lock(file) + contents = to_lock + + return if @lockfile_contents == contents + + File.open(file, 'w') do |f| + f.puts contents + end + end + def to_lock out = "" sorted_sources.each do |source| # Add the source header @@ -265,10 +287,10 @@ def expand_dependencies(dependencies, remote = false) deps = [] dependencies.each do |dep| dep.gem_platforms(@platforms).each do |p| - deps << DepProxy.new(dep, p) if remote || p == Gem::Platform.local.to_generic + deps << DepProxy.new(dep, p) if remote || p == generic(Gem::Platform.local) end end deps end