Files
jhonny-editor/admin/inativos/run-app.command
T
João Henrique b541f502ba feat: initial commit - Jhonny Editor
- Adicionado estrutura completa do projeto
- Configurado MCP server para Premiere Pro
- Adicionado documentação e skills
- Configurado Gitignore para o projeto
2026-09-08 09:59:31 -04:00

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