fix: move PG version check before servicesFlag guard

The version check was after the early-exit guard, so if services were
already running it never triggered. Now it runs first, stopping and
reinitializing the cluster before checking the flag.
This commit is contained in:
Graham McInitre 2026-07-16 09:04:27 -05:00
parent 33cb8ca769
commit 38b7fb00f1

View file

@ -53,13 +53,9 @@ let
echo "🚀 Starting development services..."
# Check if already started
if [ -f "${servicesFlag}" ]; then
echo " Services already running (remove ${servicesFlag} to force restart)"
exit 0
fi
# Check if cluster needs reinitialization (PG extensions or version changed)
# Check if PG version/extensions changed and reinit if needed.
# Must run BEFORE the servicesFlag guard so already-running clusters
# get reinitialized when extensions or versions change.
pg_needs_reinit=false
if [ -d "${pgDataDir}" ] && [ -f "${pgVersionFile}" ]; then
if [ "$(cat ${pgVersionFile})" != "${pg}" ]; then
@ -68,18 +64,22 @@ let
fi
fi
if [ -d "${pgDataDir}" ] && [ ! -f "${pgVersionFile}" ]; then
# Legacy cluster without version file, reinit to be safe
pg_needs_reinit=true
fi
if $pg_needs_reinit; then
echo "🗑 Removing old PostgreSQL cluster..."
# Stop if running
echo "🗑 Stopping old PostgreSQL and removing cluster..."
${pg}/bin/pg_ctl -D ${pgDataDir} stop -m fast 2>/dev/null || true
rm -rf ${pgDataDir}
rm -f ${servicesFlag}
fi
# Check if already started (with correct version)
if [ -f "${servicesFlag}" ]; then
echo " Services already running (remove ${servicesFlag} to force restart)"
exit 0
fi
# Initialize PostgreSQL if needed
if [ ! -d "${pgDataDir}" ]; then
echo "📦 Initializing PostgreSQL database..."