source 'https://rubygems.org'

ruby '>= 2.7.0', '< 3.3.0'

gem 'rails', '~> 6.1.7'
gem 'rouge', '~> 4.2'
gem 'request_store', '~> 1.5.0'
gem 'mini_mime', '~> 1.1.0'
gem "actionpack-xml_parser"
gem 'roadie-rails', '~> 3.1.0'
gem 'marcel'
gem 'mail', '~> 2.8.1'
gem 'nokogiri', Gem.ruby_version >= Gem::Version.new('3.1') ? '~> 1.18' : '~> 1.15'
gem 'i18n', '~> 1.14.1'
gem 'rbpdf', '~> 1.21.3'
gem 'addressable'
gem 'rubyzip', '~> 2.3.0'

#  Ruby Standard Gems
gem 'csv', '~> 3.2'
gem 'net-imap', '~> 0.3'
gem 'net-pop', '~> 0.1'
gem 'net-smtp', '~> 0.3'
gem 'rexml', require: false if Gem.ruby_version >= Gem::Version.new('3.0')

# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :x64_mingw, :mswin]

# TOTP-based 2-factor authentication
gem 'rotp', '>= 5.0.0'
gem 'rqrcode'

# HTML pipeline and sanitization
gem "html-pipeline", "~> 2.13"
gem "sanitize", ">= 6.0", "< 8"

# Optional gem for LDAP authentication
group :ldap do
  gem 'net-ldap', '~> 0.17'
end

local_gemfile = File.join(File.dirname(__FILE__), "Gemfile.local")
if File.exist?(local_gemfile)
  eval_gemfile local_gemfile
end

# Load plugins' Gemfiles
Dir.glob File.expand_path("../plugins/*/{Gemfile,PluginGemfile}", __FILE__) do |file|
  eval_gemfile file
end

Dir["#{File.dirname(__FILE__)}/bundler.d/*.rb"].each do |bundle|
  self.instance_eval(Bundler.read_file(bundle))
end
