1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- class GemfileHelper
- class << self
- def rails_env
- ENV['RAILS_ENV'] ||
- case File.basename($0)
- when 'rspec'
- 'test'
- when 'rake'
- 'test' if ARGV.any?(/\Aspec(?:\z|:)/)
- end || 'development'
- end
- def load_dotenv
- root = Pathname.new(__dir__).parent
- dotenv_dir = (root / 'vendor/gems').glob('dotenv-[0-9]*').last
- yield dotenv_dir.to_s if block_given?
- return if ENV['ON_HEROKU'] == 'true'
- $:.unshift dotenv_dir.join('lib').to_s
- require "dotenv"
- $:.shift
- sanity_check Dotenv.load(
- root.join(".env.local"),
- root.join(".env.#{rails_env}"),
- root.join(".env")
- )
- end
- GEM_NAME = /[A-Za-z0-9.\-_]+/
- GEM_OPTIONS = /(.+?)\s*(?:,\s*(.+?))?/
- GEM_SEPARATOR = /\s*(?:,|\z)/
- GEM_REGULAR_EXPRESSION = /(#{GEM_NAME})(?:\(#{GEM_OPTIONS}\))?#{GEM_SEPARATOR}/
- def parse_each_agent_gem(string)
- return unless string
- string.scan(GEM_REGULAR_EXPRESSION).each do |name, version, args|
- if version =~ /\w+:/
- args = "#{version},#{args}"
- version = nil
- end
- yield [name, version, parse_gem_args(args)].compact
- end
- end
- private
- def parse_gem_args(args)
- return nil unless args
- args.scan(/(\w+):\s*(.+?)#{GEM_SEPARATOR}/).to_h { |key, value|
- [key.to_sym, value]
- }
- end
- def sanity_check(env)
- return if ENV['CI'] == 'true' || ENV['APP_SECRET_TOKEN'] || !env.empty?
- # .env is not necessary in bundle update/lock; this helps Renovate
- return if (File.basename($0) in 'bundle' | 'bundler') && (ARGV.first in 'lock' | 'update')
- puts warning
- require "shellwords"
- puts "command: #{[$0, *ARGV].shelljoin}"
- raise "Could not load huginn settings from .env file."
- end
- def warning
- <<~EOF
- Could not load huginn settings from .env file.
- Make sure to copy the .env.example to .env and change it to match your configuration.
- Capistrano 2 users: Make sure shared files are symlinked before bundle runs: before 'bundle:install', 'deploy:symlink_configs'
- EOF
- end
- end
- end
|