source 'https://rubygems.org'

ruby '>= 3.2.0', '< 4.0.0'

gem 'rails', '>= 7.2.3'
gem 'rouge', '>= 4.5'
gem 'mini_mime', '>= 1.1.0'
gem "actionpack-xml_parser"
gem 'roadie-rails', '>= 3.3.0'
gem 'marcel'
gem 'mail', '>= 2.8.1'
gem 'nokogiri', '>= 1.19.1'
gem 'i18n', '>= 1.14.1'
gem 'rbpdf', '>= 1.21.4'
gem 'addressable'
gem 'rubyzip', '>= 2.4.0'
gem 'propshaft', '>= 1.1.0'
gem 'rack', '>= 3.1.3'
gem "stimulus-rails", ">= 1.3"
gem "importmap-rails", ">= 2.0"
gem 'commonmarker', '>= 2.3.0'
gem "doorkeeper", ">= 5.8.2"
gem "bcrypt", require: false
gem "doorkeeper-i18n", ">= 5.2"
gem "requestjs-rails", ">= 0.0.13"

#  Ruby Standard Gems
gem 'csv', '>= 3.3.2'
gem 'net-imap', '>= 0.5.7'
gem 'net-pop', '>= 0.1.2'
gem 'net-smtp', '>= 0.5.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.2"
gem "sanitize", ">= 6.0"

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

# Optional gem for exporting the gantt to a PNG file
group :minimagick do
  gem 'mini_magick', '>= 5.2.0'
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
