[rubygems/rubygems] Completely remove passing --ext to bundle gem without a value

https://github.com/rubygems/rubygems/commit/9f34bf6854

Co-authored-by: Martin Emde <martinemde@users.noreply.github.com>
This commit is contained in:
David Rodríguez 2025-09-09 19:19:36 +02:00 committed by Hiroshi SHIBATA
parent 44a4f88159
commit da130d25e3
3 changed files with 21 additions and 34 deletions

View File

@ -24,7 +24,7 @@ module Bundler
}.freeze
def self.start(*)
check_deprecated_ext_option(ARGV) if ARGV.include?("--ext")
check_invalid_ext_option(ARGV) if ARGV.include?("--ext")
super
ensure
@ -657,18 +657,15 @@ module Bundler
end
end
def self.check_deprecated_ext_option(arguments)
# when deprecated version of `--ext` is called
# print out deprecation warning and pretend `--ext=c` was provided
if deprecated_ext_value?(arguments)
message = "Extensions can now be generated using C or Rust, so `--ext` with no arguments has been deprecated. Please select a language, e.g. `--ext=rust` to generate a Rust extension. This gem will now be generated as if `--ext=c` was used."
def self.check_invalid_ext_option(arguments)
# when invalid version of `--ext` is called
if invalid_ext_value?(arguments)
removed_message = "Extensions can now be generated using C or Rust, so `--ext` with no arguments has been removed. Please select a language, e.g. `--ext=rust` to generate a Rust extension."
SharedHelpers.major_deprecation 2, message, removed_message: removed_message
arguments[arguments.index("--ext")] = "--ext=c"
raise InvalidOption, removed_message
end
end
def self.deprecated_ext_value?(arguments)
def self.invalid_ext_value?(arguments)
index = arguments.index("--ext")
next_argument = arguments[index + 1]
@ -676,15 +673,15 @@ module Bundler
# for example `bundle gem hello --ext c`
return false if EXTENSIONS.include?(next_argument)
# deprecated call when --ext is called with no value in last position
# invalid call when --ext is called with no value in last position
# for example `bundle gem hello_gem --ext`
return true if next_argument.nil?
# deprecated call when --ext is followed by other parameter
# invalid call when --ext is followed by other parameter
# for example `bundle gem --ext --no-ci hello_gem`
return true if next_argument.start_with?("-")
# deprecated call when --ext is followed by gem name
# invalid call when --ext is followed by gem name
# for example `bundle gem --ext hello_gem`
return true if next_argument

View File

@ -1661,24 +1661,6 @@ RSpec.describe "bundle gem" do
include_examples "paths that depend on gem name"
context "--ext parameter with no value" do
context "is deprecated" do
it "prints deprecation when used after gem name" do
bundle ["gem", "--ext", gem_name].compact.join(" ")
expect(err).to include "[DEPRECATED]"
expect(err).to include "`--ext` with no arguments has been deprecated"
expect(bundled_app("#{gem_name}/ext/#{gem_name}/#{gem_name}.c")).to exist
end
it "prints deprecation when used before gem name" do
bundle ["gem", gem_name, "--ext"].compact.join(" ")
expect(err).to include "[DEPRECATED]"
expect(err).to include "`--ext` with no arguments has been deprecated"
expect(bundled_app("#{gem_name}/ext/#{gem_name}/#{gem_name}.c")).to exist
end
end
end
context "--ext parameter set with C" do
let(:flags) { "--ext=c" }
@ -1686,10 +1668,6 @@ RSpec.describe "bundle gem" do
bundle ["gem", gem_name, flags].compact.join(" ")
end
it "is not deprecated" do
expect(err).not_to include "[DEPRECATED] Option `--ext` without explicit value is deprecated."
end
it "builds ext skeleton" do
expect(bundled_app("#{gem_name}/ext/#{gem_name}/extconf.rb")).to exist
expect(bundled_app("#{gem_name}/ext/#{gem_name}/#{gem_name}.h")).to exist

View File

@ -735,4 +735,16 @@ RSpec.describe "major deprecations" do
end
end
end
context " bundle gem --ext parameter with no value" do
it "prints error when used before gem name" do
bundle "gem --ext foo", raise_on_error: false
expect(err).to include "Extensions can now be generated using C or Rust, so `--ext` with no arguments has been removed. Please select a language, e.g. `--ext=rust` to generate a Rust extension."
end
it "prints error when used after gem name" do
bundle "gem foo --ext", raise_on_error: false
expect(err).to include "Extensions can now be generated using C or Rust, so `--ext` with no arguments has been removed. Please select a language, e.g. `--ext=rust` to generate a Rust extension."
end
end
end