mirror of
https://github.com/discourse/discourse.git
synced 2026-03-03 22:05:52 +08:00
This amends lefthook to use the more reliable doublestar globber: https://github.com/evilmartians/lefthook/blob/master/docs/mdbook/configuration/glob_matcher.md it also cleans up the config so we can properly run and filter. Notably ember linter explodes if you pass it files your are not meant to lint. The current fix has bin/lint read the config from lefthook and filter out the files that need no linting. `--file` overrides the glob so we can not pass in files unfiltered. This also simplifies some of the linters internals for easier maintenance
116 lines
3.1 KiB
Ruby
Executable file
116 lines
3.1 KiB
Ruby
Executable file
#!/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.
|
|
#
|
|
|
|
require "rubygems"
|
|
|
|
m =
|
|
Module.new do
|
|
module_function
|
|
|
|
def invoked_as_script?
|
|
File.expand_path($0) == File.expand_path(__FILE__)
|
|
end
|
|
|
|
def env_var_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`
|
|
bundler_version = nil
|
|
update_index = nil
|
|
ARGV.each_with_index do |a, i|
|
|
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 = $1
|
|
update_index = i
|
|
end
|
|
bundler_version
|
|
end
|
|
|
|
def gemfile
|
|
gemfile = ENV["BUNDLE_GEMFILE"]
|
|
return gemfile if gemfile && !gemfile.empty?
|
|
|
|
File.expand_path("../../Gemfile", __FILE__)
|
|
end
|
|
|
|
def lockfile
|
|
lockfile =
|
|
case File.basename(gemfile)
|
|
when "gems.rb"
|
|
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)
|
|
unless lockfile_contents =~ /\n\nBUNDLED WITH\n\s{2,}(#{Gem::Version::VERSION_PATTERN})\n/
|
|
return
|
|
end
|
|
Regexp.last_match(1)
|
|
end
|
|
|
|
def bundler_version
|
|
@bundler_version ||= env_var_version || cli_arg_version || lockfile_version
|
|
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
|
|
|
|
return requirement if Gem::Version.new(Gem::VERSION) >= Gem::Version.new("2.7.0")
|
|
|
|
requirement += ".a" if bundler_gem_version.prerelease?
|
|
|
|
requirement
|
|
end
|
|
|
|
def load_bundler!
|
|
ENV["BUNDLE_GEMFILE"] ||= gemfile
|
|
|
|
activate_bundler
|
|
end
|
|
|
|
def activate_bundler
|
|
gem_error = activation_error_handling { gem "bundler", bundler_requirement }
|
|
return if gem_error.nil?
|
|
require_error = activation_error_handling { require "bundler/version" }
|
|
if require_error.nil? &&
|
|
Gem::Requirement.new(bundler_requirement).satisfied_by?(
|
|
Gem::Version.new(Bundler::VERSION),
|
|
)
|
|
return
|
|
end
|
|
warn "Activating bundler (#{bundler_requirement}) failed:\n#{gem_error.message}\n\nTo 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!
|
|
|
|
load Gem.bin_path("bundler", "bundle") if m.invoked_as_script?
|