2021-09-26 14:41:38 -07:00
#!/usr/bin/env ruby
# frozen_string_literal: true
#
# This file was generated by Bundler.
#
# The application 'bundle' is installed as part of a gem, and
# this file is here to facilitate running it.
#
2021-09-26 14:51:13 -07:00
require 'rubygems'
2021-09-26 14:41:38 -07:00
m = Module . new do
module_function
def invoked_as_script?
2021-09-26 14:51:13 -07:00
File . expand_path ( $PROGRAM_NAME ) == File . expand_path ( __FILE__ )
2021-09-26 14:41:38 -07:00
end
def env_var_version
2021-09-26 14:51:13 -07:00
ENV [ 'BUNDLER_VERSION' ]
2021-09-26 14:41:38 -07:00
end
def cli_arg_version
return unless invoked_as_script? # don't want to hijack other binstubs
2021-09-26 14:51:13 -07:00
return unless 'update' . start_with? ( ARGV . first || ' ' ) # must be running `bundle update`
2021-09-26 14:41:38 -07:00
bundler_version = nil
update_index = nil
ARGV . each_with_index do | a , i |
2021-09-26 14:51:13 -07:00
bundler_version = a if update_index && update_index . succ == i && a =~ Gem :: Version :: ANCHORED_VERSION_PATTERN
2021-09-26 14:41:38 -07:00
next unless a =~ / \ A--bundler(?:[= ]( #{ Gem :: Version :: VERSION_PATTERN } ))? \ z /
2021-09-26 14:51:13 -07:00
bundler_version = Regexp . last_match ( 1 )
2021-09-26 14:41:38 -07:00
update_index = i
end
bundler_version
end
def gemfile
2021-09-26 14:51:13 -07:00
gemfile = ENV [ 'BUNDLE_GEMFILE' ]
2021-09-26 14:41:38 -07:00
return gemfile if gemfile && ! gemfile . empty?
2021-09-26 14:51:13 -07:00
File . expand_path ( '../Gemfile' , __dir__ )
2021-09-26 14:41:38 -07:00
end
def lockfile
lockfile =
case File . basename ( gemfile )
2021-09-26 14:51:13 -07:00
when 'gems.rb' then gemfile . sub ( / \ .rb$ / , gemfile )
2021-09-26 14:41:38 -07:00
else " #{ gemfile } .lock "
end
File . expand_path ( lockfile )
end
def lockfile_version
return unless File . file? ( lockfile )
2021-09-26 14:51:13 -07:00
2021-09-26 14:41:38 -07:00
lockfile_contents = File . read ( lockfile )
return unless lockfile_contents =~ / \ n \ nBUNDLED WITH \ n \ s{2,}( #{ Gem :: Version :: VERSION_PATTERN } ) \ n /
2021-09-26 14:51:13 -07:00
2021-09-26 14:41:38 -07:00
Regexp . last_match ( 1 )
end
def bundler_version
@bundler_version || =
env_var_version || cli_arg_version ||
2021-09-26 14:51:13 -07:00
lockfile_version
2021-09-26 14:41:38 -07:00
end
def bundler_requirement
return " #{ Gem :: Requirement . default } .a " unless bundler_version
bundler_gem_version = Gem :: Version . new ( bundler_version )
requirement = bundler_gem_version . approximate_recommendation
2021-09-26 14:51:13 -07:00
return requirement unless Gem :: Version . new ( Gem :: VERSION ) < Gem :: Version . new ( '2.7.0' )
2021-09-26 14:41:38 -07:00
2021-09-26 14:51:13 -07:00
requirement += '.a' if bundler_gem_version . prerelease?
2021-09-26 14:41:38 -07:00
requirement
end
def load_bundler!
2021-09-26 14:51:13 -07:00
ENV [ 'BUNDLE_GEMFILE' ] || = gemfile
2021-09-26 14:41:38 -07:00
activate_bundler
end
def activate_bundler
gem_error = activation_error_handling do
2021-09-26 14:51:13 -07:00
gem 'bundler' , bundler_requirement
2021-09-26 14:41:38 -07:00
end
return if gem_error . nil?
2021-09-26 14:51:13 -07:00
2021-09-26 14:41:38 -07:00
require_error = activation_error_handling do
2021-09-26 14:51:13 -07:00
require 'bundler/version'
end
if require_error . nil? && Gem :: Requirement . new ( bundler_requirement ) . satisfied_by? ( Gem :: Version . new ( Bundler :: VERSION ) )
return
2021-09-26 14:41:38 -07:00
end
2021-09-26 14:51:13 -07:00
2021-09-26 14:41:38 -07:00
warn " Activating bundler ( #{ bundler_requirement } ) failed: \n #{ gem_error . message } \n \n To install the version of bundler this project requires, run `gem install bundler -v ' #{ bundler_requirement } '` "
exit 42
end
def activation_error_handling
yield
nil
rescue StandardError , LoadError = > e
e
end
end
m . load_bundler!
2021-09-26 14:51:13 -07:00
load Gem . bin_path ( 'bundler' , 'bundle' ) if m . invoked_as_script?