#!/usr/bin/env bash set -euo pipefail ENV_FILE="${ENV_FILE:-./.env}" if [[ -f "$ENV_FILE" ]]; then set -a # shellcheck source=/dev/null . "$ENV_FILE" set +a fi if [[ -z "${DATABASE_URL:-}" ]]; then echo "DATABASE_URL is required." exit 1 fi if [[ -z "${EXPECTED_PROD_DB_HOST:-}" || -z "${EXPECTED_PROD_DB_NAME:-}" ]]; then echo "EXPECTED_PROD_DB_HOST and EXPECTED_PROD_DB_NAME are required." exit 1 fi extract_host() { local url="$1" sed -E 's#^[a-zA-Z][a-zA-Z0-9+.-]*://[^@/]+@([^/:?]+).*$#\1#' <<< "$url" } extract_db() { local url="$1" sed -E 's#^[a-zA-Z][a-zA-Z0-9+.-]*://[^/]+/([^?]+).*$#\1#' <<< "$url" } ACTUAL_HOST="$(extract_host "$DATABASE_URL")" ACTUAL_DB="$(extract_db "$DATABASE_URL")" if [[ "$ACTUAL_HOST" == "$DATABASE_URL" || "$ACTUAL_DB" == "$DATABASE_URL" ]]; then echo "Unable to parse DATABASE_URL." exit 1 fi if [[ "$ACTUAL_HOST" != "$EXPECTED_PROD_DB_HOST" ]]; then echo "DATABASE_URL host mismatch. expected=$EXPECTED_PROD_DB_HOST actual=$ACTUAL_HOST" exit 1 fi if [[ "$ACTUAL_DB" != "$EXPECTED_PROD_DB_NAME" ]]; then echo "DATABASE_URL db mismatch. expected=$EXPECTED_PROD_DB_NAME actual=$ACTUAL_DB" exit 1 fi echo "DATABASE_URL target check passed (host=$ACTUAL_HOST db=$ACTUAL_DB)."