You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
1.8 KiB
Bash
60 lines
1.8 KiB
Bash
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
# Normalizar rutas de DB a absolutas para que bot y web apunten al mismo archivo
|
|
if [ -n "${DB_PATH:-}" ]; then
|
|
# readlink -f resuelve a ruta absoluta y elimina ./, ../, etc.
|
|
DB_PATH="$(readlink -f "$DB_PATH")" || true
|
|
export DB_PATH
|
|
else
|
|
DATA_DIR="${DATA_DIR:-/app/data}"
|
|
DATA_DIR="$(readlink -f "$DATA_DIR")" || true
|
|
export DATA_DIR
|
|
fi
|
|
|
|
# Determinar archivo de base de datos para esperas
|
|
if [ -n "${DB_PATH:-}" ]; then
|
|
DB_FILE="$DB_PATH"
|
|
else
|
|
DB_FILE="${DATA_DIR:-/app/data}/tasks.db"
|
|
fi
|
|
|
|
# Arranca el bot en segundo plano (puerto 3007 por defecto)
|
|
BOT_PORT="${BOT_PORT:-3007}"
|
|
PORT="$BOT_PORT" bun run index.ts &
|
|
|
|
# Esperar a que exista el archivo de DB (máx ~30s)
|
|
echo "[startup] Esperando a que exista la base de datos en: $DB_FILE"
|
|
for i in $(seq 1 150); do
|
|
if [ -f "$DB_FILE" ]; then break; fi
|
|
sleep 0.2
|
|
done
|
|
|
|
# Esperar a que las tablas de auth estén creadas por las migraciones del bot (máx ~30s)
|
|
if command -v sqlite3 >/dev/null 2>&1; then
|
|
echo "[startup] Verificando tablas de autenticación (web_tokens, web_sessions)..."
|
|
for i in $(seq 1 150); do
|
|
if [ -f "$DB_FILE" ]; then
|
|
HAS_AUTH=$(sqlite3 "$DB_FILE" "SELECT 1 FROM sqlite_master WHERE type='table' AND name IN ('web_tokens','web_sessions') LIMIT 1;" || true)
|
|
if [ "$HAS_AUTH" = "1" ]; then
|
|
break
|
|
fi
|
|
fi
|
|
sleep 0.2
|
|
done
|
|
else
|
|
echo "[startup] sqlite3 no disponible; se omite verificación de tablas (continuando)."
|
|
fi
|
|
|
|
# Arranca la web (SvelteKit) en segundo plano en el puerto 3008
|
|
WEB_PORT="${WEB_PORT:-3008}"
|
|
pushd apps/web >/dev/null
|
|
PORT="$WEB_PORT" bun ./build/index.js &
|
|
popd >/dev/null
|
|
|
|
# Pequeña espera para evitar condiciones de carrera
|
|
sleep 1
|
|
|
|
# Arranca el router en primer plano en el puerto 3000 (o $PORT si viene de CapRover)
|
|
exec bun proxy.ts
|