diff options
author | David RodrÃguez <[email protected]> | 2025-02-21 11:39:33 +0100 |
---|---|---|
committer | Hiroshi SHIBATA <[email protected]> | 2025-02-25 15:36:46 +0900 |
commit | 528471927307552efac5ff7e999df47dcb0bced2 (patch) | |
tree | 10e26d30a3610765b368e347e85e207fa374ffb5 /lib | |
parent | 8b952e6489e1cb9955f62e32736e8dc7ff86fa91 (diff) |
[rubygems/rubygems] Refactor handling platform removals
And make it consistent with platform additions.
https://github.com/rubygems/rubygems/commit/64342ae404
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/12804
Diffstat (limited to 'lib')
-rw-r--r-- | lib/bundler/cli/lock.rb | 3 | ||||
-rw-r--r-- | lib/bundler/definition.rb | 18 |
2 files changed, 10 insertions, 11 deletions
diff --git a/lib/bundler/cli/lock.rb b/lib/bundler/cli/lock.rb index ff08927363..b60c82e3a1 100644 --- a/lib/bundler/cli/lock.rb +++ b/lib/bundler/cli/lock.rb @@ -44,7 +44,8 @@ module Bundler Bundler::CLI::Common.configure_gem_version_promoter(definition, options) if options[:update] - options["remove-platform"].each do |platform| + options["remove-platform"].each do |platform_string| + platform = Gem::Platform.new(platform_string) definition.remove_platform(platform) end diff --git a/lib/bundler/definition.rb b/lib/bundler/definition.rb index 1d5a0e4c15..4c7ae7e71d 100644 --- a/lib/bundler/definition.rb +++ b/lib/bundler/definition.rb @@ -94,7 +94,7 @@ module Bundler @locked_ruby_version = nil @new_platforms = [] - @removed_platform = nil + @removed_platforms = [] if lockfile_exists? @lockfile_contents = Bundler.read_file(lockfile) @@ -330,7 +330,7 @@ module Bundler SpecSet.new(filter_specs(@locked_specs, @dependencies - deleted_deps)) else Bundler.ui.debug "Found no changes, using resolution from the lockfile" - if @removed_platform || @locked_gems.may_include_redundant_platform_specific_gems? + if @removed_platforms.any? || @locked_gems.may_include_redundant_platform_specific_gems? SpecSet.new(filter_specs(@locked_specs, @dependencies)) else @locked_specs @@ -416,10 +416,8 @@ module Bundler deleted = [] changed = [] - new_platforms = @platforms - @locked_platforms - deleted_platforms = @locked_platforms - @platforms - added.concat new_platforms.map {|p| "* platform: #{p}" } - deleted.concat deleted_platforms.map {|p| "* platform: #{p}" } + added.concat @new_platforms.map {|p| "* platform: #{p}" } + deleted.concat @removed_platforms.map {|p| "* platform: #{p}" } added.concat new_deps.map {|d| "* #{pretty_dep(d)}" } if new_deps.any? deleted.concat deleted_deps.map {|d| "* #{pretty_dep(d)}" } if deleted_deps.any? @@ -511,10 +509,10 @@ module Bundler end def remove_platform(platform) - removed_platform = @platforms.delete(Gem::Platform.new(platform)) - @removed_platform ||= removed_platform - return if removed_platform - raise InvalidOption, "Unable to remove the platform `#{platform}` since the only platforms are #{@platforms.join ", "}" + raise InvalidOption, "Unable to remove the platform `#{platform}` since the only platforms are #{@platforms.join ", "}" unless @platforms.include?(platform) + + @removed_platforms << platform + @platforms.delete(platform) end def nothing_changed? |