diff options
Diffstat (limited to 'bin/with_rubygems')
-rwxr-xr-x | bin/with_rubygems | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/bin/with_rubygems b/bin/with_rubygems new file mode 100755 index 0000000000..666467b1e5 --- /dev/null +++ b/bin/with_rubygems @@ -0,0 +1,35 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +require "pathname" + +def run(*cmd) + return if system(*cmd) + raise "Running `#{cmd.join(" ")}` failed" +end + +version = ENV.delete("RGV") +rubygems_path = Pathname.new(__FILE__).join("../../tmp/rubygems").expand_path +unless rubygems_path.directory? + rubygems_path.parent.mkpath unless rubygems_path.directory? + run("git", "clone", "https://github.com/rubygems/rubygems.git", rubygems_path.to_s) +end +Dir.chdir(rubygems_path) do + version = "v#{version}" if version =~ /\A\d/ + run("git", "checkout", version, "--quiet") +end if version + +ENV["RUBYOPT"] = %(-I#{rubygems_path + "lib"} #{ENV["RUBYOPT"]}) +if cmd = ARGV.first + possible_dirs = [ + Pathname.new(__FILE__) + "..", + Pathname.new(__FILE__) + "../../exe", + rubygems_path + "bin", + ] + cmd = possible_dirs.map do |dir| + dir.join(cmd).expand_path + end.find(&:file?) + ARGV[0] = cmd.to_s if cmd +end + +exec(*ARGV) if $0 == __FILE__ |