summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorSamuel Giddins <[email protected]>2023-02-13 18:39:08 -0800
committergit <[email protected]>2023-02-22 08:42:17 +0000
commit2dd96983505285bf58845d1687a9a6d6c0af959b (patch)
tree7ae673c2f046f63a6ca08502433aae1a42f5b1e5 /lib
parent47d4f73ee755a0ae7b26eb2e35b820202e008763 (diff)
[rubygems/rubygems] Allow gem exec gem
https://github.com/rubygems/rubygems/commit/a767f7b9be
Diffstat (limited to 'lib')
-rw-r--r--lib/rubygems/commands/exec_command.rb18
1 files changed, 13 insertions, 5 deletions
diff --git a/lib/rubygems/commands/exec_command.rb b/lib/rubygems/commands/exec_command.rb
index b525d7fa2b..463308627a 100644
--- a/lib/rubygems/commands/exec_command.rb
+++ b/lib/rubygems/commands/exec_command.rb
@@ -1,6 +1,7 @@
# frozen_string_literal: true
require_relative "../command"
require_relative "../dependency_installer"
+require_relative "../gem_runner"
require_relative "../package"
require_relative "../version_option"
@@ -60,7 +61,10 @@ to the same gem path as user-installed gems.
check_executable
print_command
- if options[:conservative]
+ if options[:gem_name] == "gem" && options[:executable] == "gem"
+ Gem::GemRunner.new.run options[:args]
+ return
+ elsif options[:conservative]
install_if_needed
else
install
@@ -135,15 +139,19 @@ to the same gem path as user-installed gems.
activate!
end
- def install
- gem_name = options[:gem_name]
- gem_version = options[:version]
-
+ def set_gem_exec_install_paths
home = File.join(Gem.dir, "gem_exec")
ENV["GEM_PATH"] = ([home] + Gem.path).join(Gem.path_separator)
ENV["GEM_HOME"] = home
Gem.clear_paths
+ end
+
+ def install
+ set_gem_exec_install_paths
+
+ gem_name = options[:gem_name]
+ gem_version = options[:version]
install_options = options.merge(
minimal_deps: false,