| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- #!/bin/bash
- set -e
- SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
- PACKAGE_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
- DB_DIR="$SCRIPT_DIR/db"
- # Unique project name per worktree so containers don't collide
- PROJECT_HASH=$(echo "$PACKAGE_DIR" | shasum | cut -c1-8)
- COMPOSE_PROJECT_NAME="pg-meta-${PROJECT_HASH}"
- export COMPOSE_PROJECT_NAME
- # Find an available port in the range 5432-5531
- PG_TEST_PORT=5432
- MAX_PORT=5531
- while nc -z localhost "$PG_TEST_PORT" 2>/dev/null; do
- if [ "$PG_TEST_PORT" -ge "$MAX_PORT" ]; then
- echo "error: no available port found in range 5432-${MAX_PORT}" >&2
- exit 1
- fi
- PG_TEST_PORT=$((PG_TEST_PORT + 1))
- done
- export PG_TEST_PORT
- DATABASE_URL="postgresql://postgres:postgres@localhost:${PG_TEST_PORT}"
- export DATABASE_URL
- cleanup() {
- cd "$DB_DIR"
- docker compose down 2>/dev/null || true
- }
- trap cleanup EXIT
- cd "$DB_DIR"
- docker compose down 2>/dev/null || true
- docker compose up --detach --wait
- cd "$PACKAGE_DIR"
- "$@"
- rc=$?
- exit $rc
|