From 528471927307552efac5ff7e999df47dcb0bced2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Rodr=C3=ADguez?= Date: Fri, 21 Feb 2025 11:39:33 +0100 Subject: [rubygems/rubygems] Refactor handling platform removals And make it consistent with platform additions. https://github.com/rubygems/rubygems/commit/64342ae404 --- lib/bundler/cli/lock.rb | 3 ++- 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? -- cgit v1.2.3