diff options
author | Edouard CHIN <[email protected]> | 2025-01-23 15:58:37 +0100 |
---|---|---|
committer | Hiroshi SHIBATA <[email protected]> | 2025-01-31 14:34:26 +0900 |
commit | 2ed30c9944aded2ab75943667610a83b1480b3cc (patch) | |
tree | b19dc08e543e6cd0190b3ec3bcd051818b9141de /lib/bundler/current_ruby.rb | |
parent | dc7c66510523631e0ca316e9df73f0889666d937 (diff) |
[rubygems/rubygems] Consolidate the platform into a single list:
- Similar change than https://github.com/rubygems/rubygems/commit/29a1be0008e6,
keep a single source of truth where we store the platform.
The only change worth highlighing is the platform "maglev".
It was not part of the supported platform of dependencies,
so calling `gem 'foo', plaftorm: 'maglev'` would not work.
However, it was supposed to according to https://github.com/rubygems/rubygems/commit/45ec86e2e528.
That's why it was possible to do `Bundler.current_ruby.maglev?` or
`Bundler.current_ruby.maglev_30?`.
I didn't change the current behaviour and maglev is not supported,
though I kept the `*maglev` methods as I believe CurrentRuby is
public API.
https://github.com/rubygems/rubygems/commit/29e219ebcf
Diffstat (limited to 'lib/bundler/current_ruby.rb')
-rw-r--r-- | lib/bundler/current_ruby.rb | 35 |
1 files changed, 20 insertions, 15 deletions
diff --git a/lib/bundler/current_ruby.rb b/lib/bundler/current_ruby.rb index a4c87dfd57..9cd08f4d09 100644 --- a/lib/bundler/current_ruby.rb +++ b/lib/bundler/current_ruby.rb @@ -1,5 +1,7 @@ # frozen_string_literal: true +require_relative "rubygems_ext" + module Bundler # Returns current version of Ruby # @@ -12,20 +14,22 @@ module Bundler ALL_RUBY_VERSIONS = (18..27).to_a.concat((30..35).to_a).freeze KNOWN_MINOR_VERSIONS = ALL_RUBY_VERSIONS.map {|v| v.digits.reverse.join(".") }.freeze KNOWN_MAJOR_VERSIONS = ALL_RUBY_VERSIONS.map {|v| v.digits.last.to_s }.uniq.freeze - - KNOWN_PLATFORMS = %w[ - jruby - maglev - mingw - mri - mswin - mswin64 - rbx - ruby - truffleruby - windows - x64_mingw - ].freeze + PLATFORM_MAP = { + ruby: [Gem::Platform::RUBY, CurrentRuby::ALL_RUBY_VERSIONS], + mri: [Gem::Platform::RUBY, CurrentRuby::ALL_RUBY_VERSIONS], + rbx: [Gem::Platform::RUBY], + truffleruby: [Gem::Platform::RUBY], + jruby: [Gem::Platform::JAVA, [18, 19]], + windows: [Gem::Platform::WINDOWS, CurrentRuby::ALL_RUBY_VERSIONS], + # deprecated + mswin: [Gem::Platform::MSWIN, CurrentRuby::ALL_RUBY_VERSIONS], + mswin64: [Gem::Platform::MSWIN64, CurrentRuby::ALL_RUBY_VERSIONS - [18]], + mingw: [Gem::Platform::MINGW, CurrentRuby::ALL_RUBY_VERSIONS], + x64_mingw: [Gem::Platform::X64_MINGW, CurrentRuby::ALL_RUBY_VERSIONS - [18, 19]], + }.each_with_object({}) do |(platform, spec), hash| + hash[platform] = spec[0] + spec[1]&.each {|version| hash[:"#{platform}_#{version}"] = spec[0] } + end.freeze def ruby? return true if Bundler::GemHelpers.generic_local_platform_is_ruby? @@ -67,7 +71,8 @@ module Bundler RUBY_VERSION.start_with?("#{version}.") end - KNOWN_PLATFORMS.each do |platform| + all_platforms = PLATFORM_MAP.keys << "maglev" + all_platforms.each do |platform| define_method(:"#{platform}_#{trimmed_version}?") do send(:"#{platform}?") && send(:"on_#{trimmed_version}?") end |