#!/usr/bin/env bash # Startar om Expo-tmux-sessionen för LAN-telefontest. # Sourcar .env.telefontest så att REACT_NATIVE_PACKAGER_HOSTNAME och # API_BASE_URL sätts innan app.config.ts läser dem. # # Användning (från repo-root): # ./scripts/expo-lan.sh # # Krav: tmux, pnpm, apps/mobile/package.json set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" REPO_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)" ENV_FILE="${REPO_ROOT}/.env.telefontest" LOG_FILE="${REPO_ROOT}/logs/expo.log" SESSION_NAME="expo" if [[ ! -f "${ENV_FILE}" ]]; then echo "❌ ${ENV_FILE} saknas. Skapa den med minst:" echo " REACT_NATIVE_PACKAGER_HOSTNAME=" echo " API_BASE_URL=http://:4000" exit 1 fi # Sourca env-filen i nuvarande shell så variablerna blir tillgängliga. set -a # shellcheck source=/dev/null . "${ENV_FILE}" set +a # Kontrollera att obligatoriska variabler finns. if [[ -z "${REACT_NATIVE_PACKAGER_HOSTNAME:-}" || -z "${API_BASE_URL:-}" ]]; then echo "❌ .env.telefontest måste innehålla REACT_NATIVE_PACKAGER_HOSTNAME och API_BASE_URL" exit 1 fi mkdir -p "$(dirname "${LOG_FILE}")" echo "🔄 Dödar gammal tmux-session '${SESSION_NAME}' (om den finns)..." tmux kill-session -t "${SESSION_NAME}" 2>/dev/null || true echo "🚀 Startar Expo på ${REACT_NATIVE_PACKAGER_HOSTNAME}:8081 (API: ${API_BASE_URL})..." # Starta utan pipe/tee — Expo skriver QR-kod och exp://-raden till terminalen # och kan hänga om stdout är omdirigerad. Loggning sker istället via tmux capture. tmux new-session -d -s "${SESSION_NAME}" \ "cd '${REPO_ROOT}/apps/mobile' && REACT_NATIVE_PACKAGER_HOSTNAME='${REACT_NATIVE_PACKAGER_HOSTNAME}' API_BASE_URL='${API_BASE_URL}' pnpm start" echo "⏳ Väntar på att Expo ska publicera exp://-raden..." for i in {1..45}; do sleep 1 if tmux capture-pane -t "${SESSION_NAME}" -p 2>/dev/null | grep -m1 "exp://${REACT_NATIVE_PACKAGER_HOSTNAME}:8081" >/dev/null 2>&1; then # Spara en loggsnapshot tmux capture-pane -t "${SESSION_NAME}" -p > "${LOG_FILE}" echo "✅ Expo kör på exp://${REACT_NATIVE_PACKAGER_HOSTNAME}:8081" echo " Loggsnapshot: ${LOG_FILE}" echo " Kör 'tmux attach -t ${SESSION_NAME}' för live-loggar." exit 0 fi done echo "⚠️ Expo verkar ha startat men exp://${REACT_NATIVE_PACKAGER_HOSTNAME}:8081 syns inte ännu." echo " Kör 'tmux attach -t ${SESSION_NAME}' för att se vad som händer." exit 0