namespace :db do

desc 'runs seed code from simple_seed directory'
task simple_seeds: :environment do
  if defined?(Rails)

    # All environments seed files
    all_seeds = Dir[File.join(
      Rails.root, 'db', 'simple_seeds',
      'environments', 'all', '**', '*.rb'
    )].collect do |file|
      {
        environment: :all,
        file:        file,
        filename:    File.basename(file)
      }
    end

    # Rails environment seed files
    environment_seeds = Dir[File.join(
      Rails.root, 'db', 'simple_seeds',
      'environments', Rails.env, '**', '*.rb'
    )].collect do |file|
      {
        environment: Rails.env.to_sym,
        file:        file,
        filename:    File.basename(file)
      }
    end

    # Sort the seed by filename
    #  This should make All env sort first. of course this would mean
    #  env: aaa would load first and break
    #
    #  Retweak this later if more env's come before evn: all
    seeds = (all_seeds + environment_seeds).sort_by do |seed_file|
      seed_file[:filename]
    end

    # Run simple_seeds configuration first
    # load all  configurations here
    # @max_users = 1
    # this will then use max_users as 1 in all loaded seeds
    seed_configuration_file = Rails.root.join(
      'db', 'simple_seeds', 'simple_seeds.rb'
    )
    load seed_configuration_file if File.exist?(seed_configuration_file)

    # Load each seed file. simple
    seeds.each do |seed_file|
      load seed_file[:file]
    end
  end
end

Rake::Task['seed'].enhance do
  Rake::Task[:simple_seeds].invoke
end

end