- Adicionado estrutura completa do projeto - Configurado MCP server para Premiere Pro - Adicionado documentação e skills - Configurado Gitignore para o projeto
113 lines
4.8 KiB
Bash
Executable File
113 lines
4.8 KiB
Bash
Executable File
#!/bin/bash
|
|
# Tigre (codeclass) - App GUI SwiftUI: build + empacota .app + abre.
|
|
# Sobe um nivel: o script vive em admin/, o projeto e a pasta pai.
|
|
#
|
|
# Uso:
|
|
# admin/run-app.command # build + indexa RAG + abre app
|
|
# TIGRE_SKIP_RAG_INDEX=1 admin/run-app.command # pula a reindexação do RAG
|
|
# TIGRE_APP_CONFIG=release admin/run-app.command# build release (otimizado)
|
|
#
|
|
# O que faz:
|
|
# 1) build do TigreAppUI (via make-app.command) e monta o bundle Tigre.app
|
|
# em ~/Applications/Tigre.app — um .app no macOS é uma pasta; a cada run
|
|
# nós SOBRESCREVEMOS o bundle (sem "instalar/desinstalar" nada no sistema).
|
|
# 2) reindexa o RAG do codeclass (rag/index_tigre.sh) — o build acabou de
|
|
# atualizar Sources/; pode ser pulado com TIGRE_SKIP_RAG_INDEX=1
|
|
# 3) finaliza instancia anterior do app GUI, se houver
|
|
# 4) abre o Tigre.app com `open` → macOS registra no LaunchServices: o app
|
|
# aparece no Dock com ícone, Cmd+Tab, menu no topo e nome "Tigre".
|
|
#
|
|
# Nao conflita com deploy-codeclass.command (servidor web na porta 5050) —
|
|
# os dois podem rodar juntos e enxergam os mesmos projetos.
|
|
|
|
set -uo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
|
|
CLASSDIR="$PROJECT_DIR/codeclass"
|
|
APP_DIR="${TIGRE_APP_DIR:-$HOME/Applications/Tigre.app}"
|
|
APP_BIN="$APP_DIR/Contents/MacOS/Tigre"
|
|
LOG="/tmp/tigre-appui.log"
|
|
|
|
echo "============================================================"
|
|
echo " Tigre (codeclass) :: App GUI SwiftUI"
|
|
echo " Pasta: $PROJECT_DIR"
|
|
echo " App bundle: $APP_DIR"
|
|
echo "============================================================"
|
|
echo
|
|
|
|
# 1) Empacotar/atualizar o bundle .app (faz o swift build internamente)
|
|
echo "[1/3] Build + bundle .app (make-app.command)..."
|
|
"$SCRIPT_DIR/make-app.command" || exit 1
|
|
echo
|
|
|
|
# 2) Reindexar o RAG do codeclass (rag_tigre) — passo best effort: falha de
|
|
# indexação (ex.: túnel SSH fora) NÃO impede o app de subir.
|
|
RAG_INDEXER="$PROJECT_DIR/rag/index_tigre.sh"
|
|
RAG_LOG="/tmp/tigre-rag-index.log"
|
|
if [ "${TIGRE_SKIP_RAG_INDEX:-0}" = "1" ]; then
|
|
echo "[2/3] Reindexação do RAG pulada (TIGRE_SKIP_RAG_INDEX=1)."
|
|
elif [ ! -x "$RAG_INDEXER" ]; then
|
|
echo "[2/3] AVISO: rag/index_tigre.sh não encontrado — reindexação pulada."
|
|
else
|
|
echo "[2/3] Reindexando o RAG do codeclass (rag/index_tigre.sh)..."
|
|
if "$RAG_INDEXER" > "$RAG_LOG" 2>&1; then
|
|
grep -E 'OK:|gravado' "$RAG_LOG" | tail -2 | sed 's/^/ /'
|
|
echo " RAG indexado."
|
|
else
|
|
echo " AVISO: reindexação do RAG falhou (o app segue). Log: $RAG_LOG"
|
|
tail -3 "$RAG_LOG" | sed 's/^/ /'
|
|
fi
|
|
fi
|
|
echo
|
|
|
|
# 3) Encerrar instancia anterior do app GUI — tanto do bundle (.app) quanto do
|
|
# binario solto do .build (debug/release), senao sobram instancias antigas
|
|
# vivas e o `open -n` abre uma nova por cima.
|
|
echo "[3/3] Encerrando instâncias anteriores do Tigre (se houver)..."
|
|
pkill -f "$APP_BIN" 2>/dev/null || true # instancia do bundle .app
|
|
pkill -f "TigreAppUI" 2>/dev/null || true # binario solto do .build (debug/release)
|
|
pkill -x "Tigre" 2>/dev/null || true # qualquer processo "Tigre" restante
|
|
# Espera o processo encerrar de verdade (SIGTERM pode ser ignorado pelo app)
|
|
for _ in 1 2 3 4 5; do
|
|
pgrep -f "TigreAppUI|$APP_BIN" >/dev/null 2>&1 || break
|
|
sleep 1
|
|
done
|
|
# Forca a saida se ainda estiver vivo
|
|
pkill -9 -f "$APP_BIN" 2>/dev/null || true
|
|
pkill -9 -f "TigreAppUI" 2>/dev/null || true
|
|
pkill -9 -x "Tigre" 2>/dev/null || true
|
|
sleep 1
|
|
true
|
|
|
|
# 4) Abrir o app via LaunchServices (`open`) — não é nohup de binário solto.
|
|
# TIGRE_PROJECT_ROOT garante que o app ache o puente Python do legado.
|
|
echo " Abrindo o Tigre.app..."
|
|
TIGRE_PROJECT_ROOT="$PROJECT_DIR" open -n "$APP_DIR"
|
|
echo
|
|
|
|
# Confere se o processo do bundle subiu
|
|
sleep 3
|
|
if pgrep -f "$APP_BIN" >/dev/null 2>&1; then
|
|
echo "============================================================"
|
|
echo " Tigre no ar. Ele aparece no Dock com icon e nome 'Tigre'."
|
|
echo " Para encerrar: Cmd+Q no app | pkill -f '$APP_BIN'"
|
|
echo " Para remover: rm -rf '$APP_DIR'"
|
|
echo "============================================================"
|
|
else
|
|
echo "============================================================"
|
|
echo " AVISO: nao detectamos o processo do app. Log do ultimo launch:"
|
|
echo "------------------------------------------------------------"
|
|
tail -20 "$LOG" 2>/dev/null || true
|
|
echo "============================================================"
|
|
fi
|
|
|
|
# Fecha a janela do Terminal que rodou o .command (padrao G-ART run_app):
|
|
# o app ja esta desacoplado, o script so encerra antes do aviso de
|
|
# "finalizar processos nesta janela".
|
|
(
|
|
sleep 2
|
|
osascript -e 'tell application "Terminal" to close (every window whose name contains "run-app")' >/dev/null 2>&1
|
|
) &
|
|
exit 0
|