lib/bundler/patch/conservative_definition.rb in bundler-patch-0.9.0 vs lib/bundler/patch/conservative_definition.rb in bundler-patch-0.10.0
- old
+ new
@@ -14,29 +14,40 @@
if Bundler.settings[:frozen] || (!@unlocking && nothing_changed?)
last_resolve
else
# Run a resolve against the locally available gems
base = last_resolve.is_a?(Bundler::SpecSet) ? Bundler::SpecSet.new(last_resolve) : []
- resolver = ConservativeResolver.new(index, source_requirements, base)
- locked_specs = if @unlocking && @locked_specs.length == 0
- # Have to grab these again. Default behavior is to not store any
- # locked_specs if updating all gems, because behavior is the same
- # with no lockfile OR lockfile but update them all. In our case,
- # we need to know the locked versions for conservative comparison.
- locked = Bundler::LockfileParser.new(@lockfile_contents)
- Bundler::SpecSet.new(locked.specs)
- else
- @locked_specs
- end
+ if Gem::Version.new(Bundler::VERSION) >= Gem::Version.new('1.13.0.rc.2')
+ require 'bundler/patch/gem_version_patch_promoter'
- resolver.gems_to_update = @gems_to_update
- resolver.locked_specs = locked_specs
- resolver.strict = @strict
- resolver.minor_preferred = @minor_preferred
- resolver.prefer_minimal = @prefer_minimal
+ gvpp = Bundler::Patch::GemVersionPatchPromoter.new(@gem_version_promoter.locked_specs, @gem_version_promoter.unlock_gems)
+ gvpp.level = @minor_preferred ? :minor : :patch
+ gvpp.strict = @strict
+ gvpp.minimal = @prefer_minimal
+ gvpp.gems_to_update = @gems_to_update
+ resolver = Bundler::Resolver.new(index, source_requirements, base, nil, gvpp, additional_base_requirements_for_resolve)
+ else
+ resolver = ConservativeResolver.new(index, source_requirements, base)
+ locked_specs = if @unlocking && @locked_specs.length == 0
+ # Have to grab these again. Default behavior is to not store any
+ # locked_specs if updating all gems, because behavior is the same
+ # with no lockfile OR lockfile but update them all. In our case,
+ # we need to know the locked versions for conservative comparison.
+ locked = Bundler::LockfileParser.new(@lockfile_contents)
+ Bundler::SpecSet.new(locked.specs)
+ else
+ @locked_specs
+ end
+
+ resolver.gems_to_update = @gems_to_update
+ resolver.locked_specs = locked_specs
+ resolver.strict = @strict
+ resolver.minor_preferred = @minor_preferred
+ resolver.prefer_minimal = @prefer_minimal
+ end
+
result = resolver.start(expanded_dependencies)
spec_set = Bundler::SpecSet.new(result)
-
last_resolve.merge spec_set
end
end
end
end