Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Regenerate the bundler binstub and exclude it from rubocop #1585

Merged
merged 1 commit into from
Sep 11, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .rubocop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ require:
AllCops:
TargetRubyVersion: 2.5
Exclude:
- bin/bundle
- db/migrate/**
- db/schema.rb
- vendor/bundle/**/*
Expand Down
45 changes: 22 additions & 23 deletions bin/bundle
Original file line number Diff line number Diff line change
Expand Up @@ -8,57 +8,55 @@
# this file is here to facilitate running it.
#

require 'rubygems'
require "rubygems"

m = Module.new do
module_function

def invoked_as_script?
File.expand_path($PROGRAM_NAME) == File.expand_path(__FILE__)
File.expand_path($0) == File.expand_path(__FILE__)
end

def env_var_version
ENV['BUNDLER_VERSION']
ENV["BUNDLER_VERSION"]
end

def cli_arg_version
return unless invoked_as_script? # don't want to hijack other binstubs
return unless 'update'.start_with?(ARGV.first || ' ') # must be running `bundle update`

return unless "update".start_with?(ARGV.first || " ") # must be running `bundle update`
bundler_version = nil
update_index = nil
ARGV.each_with_index do |a, i|
bundler_version = a if update_index && update_index.succ == i && a =~ Gem::Version::ANCHORED_VERSION_PATTERN
if update_index && update_index.succ == i && a =~ Gem::Version::ANCHORED_VERSION_PATTERN
bundler_version = a
end
next unless a =~ /\A--bundler(?:[= ](#{Gem::Version::VERSION_PATTERN}))?\z/

bundler_version = Regexp.last_match(1) || '>= 0.a'
bundler_version = $1 || ">= 0.a"
update_index = i
end
bundler_version
end

def gemfile
gemfile = ENV['BUNDLE_GEMFILE']
return gemfile if gemfile.present?
gemfile = ENV["BUNDLE_GEMFILE"]
return gemfile if gemfile && !gemfile.empty?

File.expand_path('../../Gemfile', __FILE__)
File.expand_path("../../Gemfile", __FILE__)
end

def lockfile
lockfile =
case File.basename(gemfile)
when 'gems.rb' then gemfile.sub(/\.rb$/, gemfile)
when "gems.rb" then gemfile.sub(/\.rb$/, gemfile)
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

Expand All @@ -70,26 +68,25 @@ m = Module.new do
end

def load_bundler!
ENV['BUNDLE_GEMFILE'] ||= gemfile
ENV["BUNDLE_GEMFILE"] ||= gemfile

# must dup string for RG < 1.8 compatibility
activate_bundler(bundler_version.dup)
end

def activate_bundler(bundler_version)
bundler_version = '< 2' if Gem::Version.correct?(bundler_version) && Gem::Version.new(bundler_version).release < Gem::Version.new('2.0')
if Gem::Version.correct?(bundler_version) && Gem::Version.new(bundler_version).release < Gem::Version.new("2.0")
bundler_version = "< 2"
end
gem_error = activation_error_handling do
gem 'bundler', bundler_version
gem "bundler", bundler_version
end
return if gem_error.nil?

require_error = activation_error_handling do
require 'bundler/version'
require "bundler/version"
end
return if require_error.nil? && Gem::Requirement.new(bundler_version).satisfied_by?(Gem::Version.new(Bundler::VERSION))

warn "Activating bundler (#{bundler_version}) failed:\n#{gem_error.message}\n\n" \
"To install the version of bundler this project requires, run `gem install bundler -v '#{bundler_version}'`"
warn "Activating bundler (#{bundler_version}) failed:\n#{gem_error.message}\n\nTo install the version of bundler this project requires, run `gem install bundler -v '#{bundler_version}'`"
exit 42
end

Expand All @@ -103,4 +100,6 @@ end

m.load_bundler!

load Gem.bin_path('bundler', 'bundle') if m.invoked_as_script?
if m.invoked_as_script?
load Gem.bin_path("bundler", "bundle")
end