require 'fileutils'
require 'yaml'
require 'securerandom'

namespace :bootstrap do
  desc 'Copy over initial db config'
  task :db_config do
    example_config_file = File.join(Rails.root, 'config', 'database.yml.example')
    new_config_file = File.join(Rails.root, 'config', 'database.yml')
    FileUtils.cp example_config_file, new_config_file
  end

  desc 'Generate new secret tokens'
  task :secret_tokens do
    secret_tokens_file = File.join Rails.root, 'config', 'secrets.yml'

    secrets = {
      'development' => {'secret_key_base' => SecureRandom.hex(64)},
      'test'        => {'secret_key_base' => SecureRandom.hex(64)},
      'production'  => {'secret_key_base' => '<%= ENV["SECRET_KEY_BASE"] %>'}
    }

    File.open(secret_tokens_file, 'w') do |f|
      f.puts secrets.to_yaml
    end
  end
end

desc 'Perform initial setup of the application'
task bootstrap: ['bootstrap:secret_tokens',
                 'bootstrap:db_config',
                 'db:create',
                 'db:migrate',
                 'db:test:prepare']