summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDavid Rodríguez <[email protected]>2025-02-21 11:39:33 +0100
committerHiroshi SHIBATA <[email protected]>2025-02-25 15:36:46 +0900
commit528471927307552efac5ff7e999df47dcb0bced2 (patch)
tree10e26d30a3610765b368e347e85e207fa374ffb5 /lib
parent8b952e6489e1cb9955f62e32736e8dc7ff86fa91 (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.rb3
-rw-r--r--lib/bundler/definition.rb18
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?