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.
#
2023-09-30 10:32:08 -07:00
require " rubygems "
2021-09-26 14:41:38 -07:00
m = Module . new do
module_function
def invoked_as_script?
2023-09-30 10:32:08 -07:00
File . expand_path ( $0 ) == File . expand_path ( __FILE__ )
2021-09-26 14:41:38 -07:00
end
def env_var_version
2023-09-30 10:32:08 -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
2023-09-30 10:32:08 -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 |
2023-09-30 10:32:08 -07:00
if update_index && update_index . succ == i && a =~ Gem :: Version :: ANCHORED_VERSION_PATTERN
bundler_version = a
end
2021-09-26 14:41:38 -07:00
next unless a =~ / \ A--bundler(?:[= ]( #{ Gem :: Version :: VERSION_PATTERN } ))? \ z /
2023-09-30 10:32:08 -07:00
bundler_version = $1
2021-09-26 14:41:38 -07:00
update_index = i
end
bundler_version
end
def gemfile
2023-09-30 10:32:08 -07:00
gemfile = ENV [ " BUNDLE_GEMFILE " ]
2021-09-26 14:41:38 -07:00
return gemfile if gemfile && ! gemfile . empty?
2023-09-30 10:32:08 -07:00
File . expand_path ( " ../Gemfile " , __dir__ )
2021-09-26 14:41:38 -07:00
end
def lockfile
lockfile =
case File . basename ( gemfile )
2023-09-30 10:32:08 -07:00
when " gems.rb " then gemfile . sub ( / \ .rb$ / , " .locked " )
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 )
lockfile_contents = File . read ( lockfile )
return unless lockfile_contents =~ / \ n \ nBUNDLED WITH \ n \ s{2,}( #{ Gem :: Version :: VERSION_PATTERN } ) \ n /
Regexp . last_match ( 1 )
end
def bundler_requirement
2023-09-30 10:32:08 -07:00
@bundler_requirement || =
env_var_version ||
cli_arg_version ||
bundler_requirement_for ( lockfile_version )
end
2021-09-26 14:41:38 -07:00
2023-09-30 10:32:08 -07:00
def bundler_requirement_for ( version )
return " #{ Gem :: Requirement . default } .a " unless version
2021-09-26 14:41:38 -07:00
2023-09-30 10:32:08 -07:00
bundler_gem_version = Gem :: Version . new ( version )
2021-09-26 14:41:38 -07:00
2023-09-30 10:32:08 -07:00
bundler_gem_version . approximate_recommendation
2021-09-26 14:41:38 -07:00
end
def load_bundler!
2023-09-30 10:32:08 -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
2023-09-30 10:32:08 -07:00
gem " bundler " , bundler_requirement
2021-09-26 14:41:38 -07:00
end
return if gem_error . nil?
require_error = activation_error_handling do
2023-09-30 10:32:08 -07:00
require " bundler/version "
2021-09-26 14:51:13 -07:00
end
2023-09-30 10:32:08 -07:00
return if require_error . nil? && Gem :: Requirement . new ( bundler_requirement ) . satisfied_by? ( Gem :: Version . new ( Bundler :: VERSION ) )
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!
2023-09-30 10:32:08 -07:00
if m . invoked_as_script?
load Gem . bin_path ( " bundler " , " bundle " )
end