# frozen_string_literal: true require 'rake'

namespace :oh_my_log do

desc 'Generate the observers for each ActiveRecord model'
# in futuro fare che puoi passare parametri e in base a quello limita gli observer da generare
task generate_observers: :environment do
  raise "Cannot create observers without an initializer, did you created it with 'oh_my_log:generate_initializer'" unless File.file?(Rails.root + 'config/initializers/oh_my_log_initializer.rb')
  OhMyLog::ObserverFactory.generate_collection
end
desc 'Generate a template initializer for OhMyLog'
# in futuro puoi passare direttamente qui alcune impostazioni dell' initialize
task generate_initializer: :environment do
  raise 'The initializer has been already generated!' if File.file?(Rails.root + 'config/initializers/oh_my_log_initializer')
  OhMyLog.generate_initializer
end

desc 'Write a test message int the logger'
# in futuro puoi passare direttamente qui alcune impostazioni dell' initialize
task test: :environment do
  OhMyLog.test_message(ENV.fetch('MSG', 'Hello World!'))
end

desc 'Install the gem by building initializer and observers'
task install: :environment do
  Rake::Task['oh_my_log:generate_initializer'].invoke
  p "generated initializer"
  sleep(1)
  require Rails.root + "config/initializers/oh_my_log_initializer.rb"
  Rake::Task['oh_my_log:generate_observers'].invoke
  p "generated collections"
end

desc 'Clean observers and initializer'
task clean: :environment do
  OhMyLog.destroy_initializer
  OhMyLog::ObserverFactory.remove_collection
end

end