# frozen_string_literal: true

# This effectively hides `rake jobshop:install:migrations` from `$ rake -T`. Rake::Task.instance_variable_set(:@comments, [])

namespace :jobshop do

task :disable_autoload do
  ActiveSupport::Dependencies.class_eval do
    extend Module.new {
      def load_file(path, const_paths = loadable_constants_for_path(path))
        jobshop_models_path = File.join(Jobshop::Engine.root, "app", "models")
        return if path.starts_with?(jobshop_models_path)
        super
      end
    }
  end
end

desc "Outputs all organization_ids"
task organizations: :environment do
  Jobshop::Organization.all.each do |organization|
    puts organization.organization_id
  end
end

desc "Start Incoming Email Worker"
task postmaster: :environment do
  queue_name = Jobshop.configuration.aws.incoming_email_queue
  postmaster_path = File.join(Jobshop::Engine.root, "lib", "jobshop",
                              "mailroom", "postmaster.rb")

  exec <<~SHELL
    bundle exec \
      shoryuken -R -q #{queue_name} -r #{postmaster_path}
  SHELL
end

namespace :webpack do
  desc "Install dependencies"
  task :install do
    Dir.chdir(File.join(__dir__, "../..")) do
      puts Dir.pwd
      system "yarn install --no-progress --production"
    end
  end

  desc "Compile assets"
  task compile: %i[ yarn environment ] do
  end
end

end

%w( db:migrate db:rollback db:migrate:up db:migrate:down ).each do |t|

Rake::Task[t].prerequisites << "jobshop:disable_autoload"

end