Files
Sven (AAMOS AI) dcaae9f0ba fix(expo): LAN-telefontest via scripts/expo-lan.sh
- Uppdatera .env API_BASE_URL till http://192.168.8.123:4000.
- Lägg till gitignorerad .env.telefontest med REACT_NATIVE_PACKAGER_HOSTNAME
  och API_BASE_URL.
- Lägg till scripts/expo-lan.sh som dödar gammal expo-tmux, sourcar
  .env.telefontest och startar Expo med rätt variabler.
- Uppdatera first-deploy.sh staging-sammanfattning: skriv ut API_BASE_URL
  och påminn om ./scripts/expo-lan.sh.
- Lägg till docs/RUNBOOK-STAGING-EXPO.md.
2026-08-07 18:02:34 +07:00

65 lines
2.4 KiB
Bash
Executable File

#!/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=<datorns LAN-IP>"
echo " API_BASE_URL=http://<datorns LAN-IP>: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