# Add your own tasks in files placed in lib/tasks ending in .rake, # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake. require_relative "config/application" Rails.application.load_tasks unless ENV["RACK_ENV"] === "production" require "rubocop/rake_task" RuboCop::RakeTask.new end locales = YAML.load_file(Rails.root.join("config/locales.yml")).values.flatten.map(&:to_sym).without(:en) namespace :translation do namespace :clobber_and_sync do task all: :environment do locales.each do |locale| puts "-- Clobbering #{locale}.yml files" system "find config/locales -name #{locale}.yml | xargs rm -v" end puts "-- Downloading from translation.io" system "rake translation:sync" puts "-- Normalizing files" system "i18n-tasks normalize -p" puts "-- Done!" end locales.each do |locale| task locale => :environment do puts "-- Clobbering #{locale}.yml files" system "find config/locales -name #{locale}.yml | xargs rm -v" puts "-- Downloading from translation.io" system "rake translation:sync" system "find config/locales -name translation.*.yml | grep -v #{locale} | xargs rm" puts "-- Normalizing files" system "i18n-tasks normalize -p" puts "-- Done!" end end end end namespace :db do task chown: :environment do # Only do this for SQLite if ActiveRecord::Base.connection.is_a? ActiveRecord::ConnectionAdapters::SQLite3Adapter # Find all the database files files = Dir.glob(ActiveRecord::Base.connection.instance_variable_get(:@config)[:database] + "*") # Change ownership - this will fail safe if the env vars aren't set FileUtils.chown(ENV.fetch("PUID", nil), ENV.fetch("PGID", nil), files, verbose: true) end end end namespace :themes do task generate: :environment do raw = Net::HTTP.get(URI.parse("https://bootswatch.com/api/5.json")) json = JSON.parse(raw) json["themes"].each do |theme| name = theme["name"].downcase contents = <<~EOF @import "bootswatch/dist/#{name}/variables"; @import '~/stylesheets/application'; @import "bootswatch/dist/#{name}/bootswatch"; EOF Rails.root.join("app/frontend/entrypoints/themes/#{name}.scss").write(contents) end end end namespace :i18n_js do task export: :environment do I18nJS.call(config_file: Rails.root.join("config/i18n-js.yml")) end end namespace :vite do task install_dependencies: "i18n_js:export" end