# frozen_string_literal: true namespace :db do

using Seedbank::DSL
override_dependency = ['db:seed:common']

namespace :seed do
  # Create seed tasks for all the seeds in seeds_path and add them to the dependency
  # list along with the original db/seeds.rb.
  common_dependencies = seed_tasks_matching(Seedbank.matcher)

  # Only add the original seeds if db/seeds.rb exists.
  if original_seeds_file
    define_seed_task original_seeds_file, :original
    common_dependencies.unshift('db:seed:original')
  end

  desc "Load the seed data from db/seeds.rb and db/seeds/#{Seedbank.matcher}."
  task 'common' => common_dependencies

  # Glob through the directories under seeds_path and create a task for each adding it to the dependency list.
  # Then create a task for the environment
  glob_seed_files_matching('/*/').each do |directory|
    environment = File.basename(directory)

    environment_dependencies = seed_tasks_matching(environment, Seedbank.matcher)

    desc "Load the seed data from db/seeds.rb, db/seeds/#{Seedbank.matcher} and db/seeds/#{environment}/#{Seedbank.matcher}."
    task environment => ['db:seed:common'] + environment_dependencies

    override_dependency << "db:seed:#{environment}" if defined?(Rails) && Rails.env == environment
  end
end

# Override db:seed to run all the common and environments seeds plus the original db:seed.
desc %(Load the seed data from db/seeds.rb, db/seeds/#{Seedbank.matcher} and db/seeds/ENVIRONMENT/#{Seedbank.matcher}.
ENVIRONMENT is the current Rails.env.)
override_seed_task seed: override_dependency

end