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
This commit is contained in:
Executable
+112
@@ -0,0 +1,112 @@
|
||||
#!/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
|
||||
Reference in New Issue
Block a user