#!/bin/bash
# Rebreak Native: Metro Bundler (Kill + Clean Restart).
# Killt jede laufende Instanz auf 8081, dann frischer Start mit --clear-Cache.
# Aufruf: ./metro.sh         (mit cache-clear, Default)
#         ./metro.sh --keep   (ohne --clear, schneller wenn keine Dependency-Changes)
set -e

cd "$(dirname "$0")"

echo "🚇 Metro Bundler"
echo "================"

# 1) Existierende Metro-Instanz auf Port 8081 killen
PIDS=$(lsof -iTCP:8081 -sTCP:LISTEN -n -P 2>/dev/null | awk 'NR>1 {print $2}' | sort -u)
if [ -n "$PIDS" ]; then
  echo "→ Killing existing Metro on :8081 (PIDs: $PIDS)"
  echo "$PIDS" | xargs kill -9 2>/dev/null || true
  sleep 1
else
  echo "→ Kein Metro auf :8081 aktiv"
fi

# 2) Stale node-Prozesse die expo CLI gestartet haben (Belt-and-Suspenders)
pkill -f "expo start" 2>/dev/null || true
pkill -f "react-native/cli/build" 2>/dev/null || true

# 3) Start
if [ "$1" = "--keep" ]; then
  echo "→ Starte Metro (Cache behalten)"
  exec npx expo start
else
  echo "→ Starte Metro mit --clear (Haste-Map + Transformer-Cache reset)"
  exec npx expo start --clear
fi
