Skip to content

Commit 9075c25

Browse files
Completely remove passing --ext to bundle gem without a value
Co-authored-by: Martin Emde <[email protected]>
1 parent a3d3df0 commit 9075c25

File tree

3 files changed

+21
-34
lines changed

3 files changed

+21
-34
lines changed

bundler/lib/bundler/cli.rb

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class CLI < Thor
2424
}.freeze
2525

2626
def self.start(*)
27-
check_deprecated_ext_option(ARGV) if ARGV.include?("--ext")
27+
check_invalid_ext_option(ARGV) if ARGV.include?("--ext")
2828

2929
super
3030
ensure
@@ -654,34 +654,31 @@ def self.reformatted_help_args(args)
654654
end
655655
end
656656

657-
def self.check_deprecated_ext_option(arguments)
658-
# when deprecated version of `--ext` is called
659-
# print out deprecation warning and pretend `--ext=c` was provided
660-
if deprecated_ext_value?(arguments)
661-
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."
657+
def self.check_invalid_ext_option(arguments)
658+
# when invalid version of `--ext` is called
659+
if invalid_ext_value?(arguments)
662660
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."
663-
SharedHelpers.major_deprecation 2, message, removed_message: removed_message
664-
arguments[arguments.index("--ext")] = "--ext=c"
661+
raise InvalidOption, removed_message
665662
end
666663
end
667664

668-
def self.deprecated_ext_value?(arguments)
665+
def self.invalid_ext_value?(arguments)
669666
index = arguments.index("--ext")
670667
next_argument = arguments[index + 1]
671668

672669
# it is ok when --ext is followed with valid extension value
673670
# for example `bundle gem hello --ext c`
674671
return false if EXTENSIONS.include?(next_argument)
675672

676-
# deprecated call when --ext is called with no value in last position
673+
# invalid call when --ext is called with no value in last position
677674
# for example `bundle gem hello_gem --ext`
678675
return true if next_argument.nil?
679676

680-
# deprecated call when --ext is followed by other parameter
677+
# invalid call when --ext is followed by other parameter
681678
# for example `bundle gem --ext --no-ci hello_gem`
682679
return true if next_argument.start_with?("-")
683680

684-
# deprecated call when --ext is followed by gem name
681+
# invalid call when --ext is followed by gem name
685682
# for example `bundle gem --ext hello_gem`
686683
return true if next_argument
687684

bundler/spec/commands/newgem_spec.rb

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1661,35 +1661,13 @@ def create_temporary_dir(dir)
16611661

16621662
include_examples "paths that depend on gem name"
16631663

1664-
context "--ext parameter with no value" do
1665-
context "is deprecated" do
1666-
it "prints deprecation when used after gem name" do
1667-
bundle ["gem", "--ext", gem_name].compact.join(" ")
1668-
expect(err).to include "[DEPRECATED]"
1669-
expect(err).to include "`--ext` with no arguments has been deprecated"
1670-
expect(bundled_app("#{gem_name}/ext/#{gem_name}/#{gem_name}.c")).to exist
1671-
end
1672-
1673-
it "prints deprecation when used before gem name" do
1674-
bundle ["gem", gem_name, "--ext"].compact.join(" ")
1675-
expect(err).to include "[DEPRECATED]"
1676-
expect(err).to include "`--ext` with no arguments has been deprecated"
1677-
expect(bundled_app("#{gem_name}/ext/#{gem_name}/#{gem_name}.c")).to exist
1678-
end
1679-
end
1680-
end
1681-
16821664
context "--ext parameter set with C" do
16831665
let(:flags) { "--ext=c" }
16841666

16851667
before do
16861668
bundle ["gem", gem_name, flags].compact.join(" ")
16871669
end
16881670

1689-
it "is not deprecated" do
1690-
expect(err).not_to include "[DEPRECATED] Option `--ext` without explicit value is deprecated."
1691-
end
1692-
16931671
it "builds ext skeleton" do
16941672
expect(bundled_app("#{gem_name}/ext/#{gem_name}/extconf.rb")).to exist
16951673
expect(bundled_app("#{gem_name}/ext/#{gem_name}/#{gem_name}.h")).to exist

bundler/spec/other/major_deprecation_spec.rb

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -744,4 +744,16 @@
744744
end
745745
end
746746
end
747+
748+
context " bundle gem --ext parameter with no value" do
749+
it "prints error when used before gem name" do
750+
bundle "gem --ext foo", raise_on_error: false
751+
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."
752+
end
753+
754+
it "prints error when used after gem name" do
755+
bundle "gem foo --ext", raise_on_error: false
756+
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."
757+
end
758+
end
747759
end

0 commit comments

Comments
 (0)