diff options
author | Michael Siegfried <michael@procore.com> | 2022-01-04 14:54:17 -0800 |
---|---|---|
committer | Hiroshi SHIBATA <hsbt@ruby-lang.org> | 2022-12-20 13:15:02 +0900 |
commit | 2bc4f1dea5e663acba1d3c662390e8fc20bf6721 (patch) | |
tree | 1269485972bc55f03289e58a2a9276947e61b127 /lib/bundler | |
parent | 1ee31f9d9dc8da4b0eb8ca39b79a6b270c6c2f2d (diff) | |
download | ruby-2bc4f1dea5e663acba1d3c662390e8fc20bf6721.tar.gz |
[rubygems/rubygems] Support for pre flag in `bundle update`
Passing this flag allows bumping to the current version, even if that
version is prerelease. This works in concert with the current flags.
https://github.com/rubygems/rubygems/commit/a6409e3509
Diffstat (limited to 'lib/bundler')
-rw-r--r-- | lib/bundler/cli.rb | 4 | ||||
-rw-r--r-- | lib/bundler/cli/common.rb | 1 | ||||
-rw-r--r-- | lib/bundler/gem_version_promoter.rb | 9 |
3 files changed, 13 insertions, 1 deletions
diff --git a/lib/bundler/cli.rb b/lib/bundler/cli.rb index 18cef045a2..28f5cd4c1e 100644 --- a/lib/bundler/cli.rb +++ b/lib/bundler/cli.rb @@ -292,6 +292,8 @@ module Bundler "Prefer updating only to next minor version" method_option "major", :type => :boolean, :banner => "Prefer updating to next major version (default)" + method_option "pre", :type => :boolean, :banner => + "If updating, allow consideration of prerelease gems" method_option "strict", :type => :boolean, :banner => "Do not allow any gem to be updated past latest --patch | --minor | --major" method_option "conservative", :type => :boolean, :banner => @@ -668,6 +670,8 @@ module Bundler "If updating, prefer updating only to next minor version" method_option "major", :type => :boolean, :banner => "If updating, prefer updating to next major version (default)" + method_option "pre", :type => :boolean, :banner => + "If updating, allow consideration of prerelease gems" method_option "strict", :type => :boolean, :banner => "If updating, do not allow any gem to be updated past latest --patch | --minor | --major" method_option "conservative", :type => :boolean, :banner => diff --git a/lib/bundler/cli/common.rb b/lib/bundler/cli/common.rb index 0d83a1c07e..d654406f65 100644 --- a/lib/bundler/cli/common.rb +++ b/lib/bundler/cli/common.rb @@ -111,6 +111,7 @@ module Bundler definition.gem_version_promoter.tap do |gvp| gvp.level = patch_level.first || :major gvp.strict = options[:strict] || options["filter-strict"] + gvp.pre = options[:pre] end end diff --git a/lib/bundler/gem_version_promoter.rb b/lib/bundler/gem_version_promoter.rb index f73f79e84d..9233fc0889 100644 --- a/lib/bundler/gem_version_promoter.rb +++ b/lib/bundler/gem_version_promoter.rb @@ -8,6 +8,7 @@ module Bundler # to the resolution engine to select the best version. class GemVersionPromoter attr_reader :level + attr_accessor :pre # By default, strict is false, meaning every available version of a gem # is returned from sort_versions. The order gives preference to the @@ -28,6 +29,7 @@ module Bundler def initialize @level = :major @strict = false + @pre = false end # @param value [Symbol] One of three Symbols: :major, :minor or :patch. @@ -66,6 +68,11 @@ module Bundler level == :minor end + # @return [bool] Convenience method for testing value of pre variable. + def pre? + pre == true + end + private def filter_dep_specs(specs, package) @@ -86,7 +93,7 @@ module Bundler locked_version = package.locked_version result = specs.sort do |a, b| - unless locked_version && package.prerelease_specified? + unless locked_version && (package.prerelease_specified? || pre?) a_pre = a.prerelease? b_pre = b.prerelease? |