#!/bin/bash set -e # Tigre (codeclass) - Deploy do servidor web novo em Swift # Sobe um nivel: o script vive em admin/, o projeto e a pasta pai. # # Uso: # admin/deploy-codeclass.command # porta 5050 (padrĂ£o) # admin/deploy-codeclass.command 8080 # porta customizada # # O que faz: # 1) localiza a toolchain Swift (Xcode) e compila o codeclass (swift build) # 2) derruba qualquer instancia antiga na porta de destino # 3) sobe o servidor novo em background (TigreApp serve) com as classes # novas (TranscriptionService + AppleVisionAnalyzer) # 4) abre o navegador quando o servidor responder # # Diferente de deploy.command (legado Python/Flask em code/app.py), este # script sobe o servidor do codeclass/ (100% Swift). Na porta 5050 eles se # conflitam: rode APENAS UM deles por vez. SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" PROJECT_DIR="$(dirname "$SCRIPT_DIR")" PORT="${1:-5050}" CLASSDIR="$PROJECT_DIR/codeclass" echo "============================================================" echo " Tigre (codeclass) :: Deploy do servidor web novo (Swift)" echo " Pasta: $PROJECT_DIR" echo " Porta: $PORT" echo "============================================================" echo # 1) Toolchain Swift (Xcode 26 / swift 6.3). Respeita PATH se ja configurado. SWIFT="$(command -v swift || true)" if [ -z "$SWIFT" ] && [ -x "/Volumes/Merongo/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift" ]; then export PATH="/Volumes/Merongo/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin:$PATH" SWIFT="swift" fi if [ -z "$SWIFT" ]; then echo "ERRO: swift nao encontrado no PATH nem no Xcode padrao." echo " Instale Xcode 26+ ou exporte o PATH da toolchain." exit 1 fi # 2) Compilar o codeclass echo "[1/3] Compilando o codeclass (swift build)..." cd "$CLASSDIR" "$SWIFT" build 2>&1 | tail -5 echo " Build OK." echo # 3) Derrubar instancias antigas na porta de destino echo "[2/3] Parando instancia anterior na porta $PORT..." lsof -ti:"$PORT" | xargs kill -9 2>/dev/null || true sleep 1 true # 4) Subir o servidor novo em background (nao trava o terminal) echo "[3/3] Levantando o servidor novo (TigreApp serve)..." echo " http://localhost:$PORT" echo LOG="/tmp/tigre-codeclass-web.log" nohup "$SWIFT" run TigreApp serve --port "$PORT" --project-root "$PROJECT_DIR" > "$LOG" 2>&1 & SERVER_PID=$! echo " PID do servidor: $SERVER_PID (log: $LOG)" echo # Abre o navegador padrao assim que o servidor responder (nao trava o boot) ( for _ in $(seq 1 45); do if curl -s -o /dev/null "http://localhost:$PORT"; then open "http://localhost:$PORT" break fi sleep 1 done ) & # Mostra o log por alguns segundos para confirmar o boot sleep 5 echo "--- primeiras linhas do log ---" tail -10 "$LOG" echo echo "============================================================" echo " Servidor novo (codeclass) no ar em http://localhost:$PORT" echo " Para encerrar: lsof -ti:$PORT | xargs kill -9" echo "============================================================"