namespace :docker do

namespace :pg do
  config   = Rails.configuration.database_configuration
  database = config[Rails.env]["database"]
  username = config[Rails.env]["username"]
  password = config[Rails.env]["password"]
  port = config[Rails.env]["port"]
  name = database
  path = '$HOME/docker/volumes/' + name

  desc "Craete Dockerized postgreSQL volume"
  task init: :environment do
    mkdir = "mkdir -p #{path}"
    run_bash(mkdir)
    run_bash("ls -la #{path}")
  end

  desc "Run Dockerized postgreSQL"
  task run: :environment do
    postgresql_cmd = """
    [[ $(docker ps --filter \"name=^/#{name}\" --format '{{.Names}}') == #{name} ]] || \
    docker run --rm --name #{name} \
    -v #{path}:/var/lib/postgresql/data \
    -e POSTGRES_DB=#{database} \
    -e POSTGRES_USER=#{username} \
    -e POSTGRES_PASSWORD=#{password} \
    -p #{port}:5432 -d postgres
    """
    run_bash postgresql_cmd
  end
end

def run_bash cmd
  system("echo \"#{cmd}\"")
  system("bash -c #{cmd.shellescape}")
end

end