#!/bin/bash
# Parse DATABASE_URL into individual PG* environment variables.
# Usage: source bin/export_pg_vars.sh
#
# Needed because PHP (server.php) and psql (init-database.sh) expect
# PGHOST, PGPORT, PGDATABASE, PGUSER, PGPASSWORD — but Scalingo only
# provides DATABASE_URL.

if [ -n "$DATABASE_URL" ] && [ -z "$PGHOST" ]; then
  eval "$(python3 -c "
import os, urllib.parse
u = urllib.parse.urlparse(os.environ['DATABASE_URL'])
qs = dict(urllib.parse.parse_qsl(u.query))
print(f'export PGHOST=\"{u.hostname}\"')
print(f'export PGPORT=\"{u.port or 5432}\"')
print(f'export PGDATABASE=\"{u.path.lstrip(\"/\")}\"')
print(f'export PGUSER=\"{u.username}\"')
print(f'export PGPASSWORD=\"{urllib.parse.unquote(u.password)}\"')
if 'sslmode' in qs:
    print(f'export PGSSLMODE=\"{qs[\"sslmode\"]}\"')
")"
  echo "-----> Parsed DATABASE_URL into PG* vars (host=$PGHOST port=$PGPORT db=$PGDATABASE)"
fi
