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
+155
@@ -0,0 +1,155 @@
|
||||
#!/bin/bash
|
||||
# Tigre (codeclass) - Empacota o TigreAppUI em um bundle .app real.
|
||||
# Sobe um nivel: o script vive em admin/, o projeto e a pasta pai.
|
||||
#
|
||||
# Uso:
|
||||
# admin/make-app.command # build debug + bundle no ~/Applications
|
||||
# TIGRE_APP_CONFIG=release admin/... # build release (otimizado)
|
||||
# TIGRE_APP_DIR=/tmp/Tigre.app admin/... # bundle em outro local
|
||||
#
|
||||
# O que faz:
|
||||
# 1) compila o TigreAppUI (swift build)
|
||||
# 2) gera o icone do app (make_icon.py + sips + iconutil -> AppIcon.icns)
|
||||
# 3) monta ~/Applications/Tigre.app:
|
||||
# Tigre.app/
|
||||
# └── Contents/
|
||||
# ├── Info.plist
|
||||
# ├── MacOS/Tigre (binario compilado)
|
||||
# └── Resources/AppIcon.icns
|
||||
# 4) codesign ad-hoc (evita atrito com Gatekeeper/LaunchServices)
|
||||
#
|
||||
# NÃO instala nem desinstala nada no sistema: um .app e so uma pasta; cada
|
||||
# execucao SOBRESCREVE o bundle. "Desinstalar" = apagar a pasta.
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
|
||||
CLASSDIR="$PROJECT_DIR/codeclass"
|
||||
APP_NAME="Tigre"
|
||||
APP_DIR="${TIGRE_APP_DIR:-$HOME/Applications/$APP_NAME.app}"
|
||||
CONFIG="${TIGRE_APP_CONFIG:-debug}"
|
||||
|
||||
CONTENTS="$APP_DIR/Contents"
|
||||
MACOS_DIR="$CONTENTS/MacOS"
|
||||
RES_DIR="$CONTENTS/Resources"
|
||||
|
||||
echo "============================================================"
|
||||
echo " Tigre :: Empacotando $APP_NAME.app"
|
||||
echo " Config: $CONFIG"
|
||||
echo " Destino: $APP_DIR"
|
||||
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."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 2) Compilar o codeclass (ida incremental; release e mais lento)
|
||||
echo "[1/4] Compilando o codeclass ($CONFIG)..."
|
||||
cd "$CLASSDIR"
|
||||
STDOUT_LOG="/tmp/tigre-build.log"
|
||||
if "$SWIFT" build -c "$CONFIG" > "$STDOUT_LOG" 2>&1; then
|
||||
tail -3 "$STDOUT_LOG" | sed 's/^/ /' || true
|
||||
else
|
||||
echo " ERRO de compilacao. Ultimas linhas:"
|
||||
tail -20 "$STDOUT_LOG" | sed 's/^/ /'
|
||||
exit 1
|
||||
fi
|
||||
BIN="$CLASSDIR/.build/$CONFIG/TigreAppUI"
|
||||
if [ ! -x "$BIN" ]; then
|
||||
echo "ERRO: binario nao encontrado apos build: $BIN"
|
||||
exit 1
|
||||
fi
|
||||
echo " Build OK."
|
||||
echo
|
||||
|
||||
# 3) Icone do app
|
||||
# Fonte: app-icon.png na RAIZ do projeto (prioridade), depois admin/app-icon.png
|
||||
# (compat), e fallback make_icon.py (gera o "T" laranja sintetico).
|
||||
echo "[2/4] Gerando icone (AppIcon.icns)..."
|
||||
CUSTOM_ICON=""
|
||||
for _cand in "$PROJECT_DIR/app-icon.png" "$SCRIPT_DIR/app-icon.png"; do
|
||||
if [ -f "$_cand" ]; then
|
||||
CUSTOM_ICON="$_cand"
|
||||
break
|
||||
fi
|
||||
done
|
||||
ICON_PNG="/tmp/tigre_icon_1024.png"
|
||||
if [ -n "$CUSTOM_ICON" ]; then
|
||||
echo " Usando icone customizado ($(echo "$CUSTOM_ICON" | sed "s|$PROJECT_DIR|.|"), $(sips -g pixelWidth "$CUSTOM_ICON" 2>/dev/null | awk '/pixelWidth/{print $2}')px)"
|
||||
# Resample p/ 1024 (o iconutil exige o slot 512@2x = 1024) e deriva os demais
|
||||
sips -z 1024 1024 "$CUSTOM_ICON" --out "$ICON_PNG" >/dev/null 2>&1
|
||||
else
|
||||
echo " app-icon.png ausente — usando icone padrao (make_icon.py)"
|
||||
python3 "$SCRIPT_DIR/make_icon.py" "$ICON_PNG"
|
||||
fi
|
||||
ICONSET="/tmp/Tigre.iconset"
|
||||
rm -rf "$ICONSET"
|
||||
mkdir -p "$ICONSET"
|
||||
for sz in 16 32 128 256 512; do
|
||||
sips -z "$sz" "$sz" "$ICON_PNG" --out "$ICONSET/icon_${sz}x${sz}.png" >/dev/null 2>&1
|
||||
dbl=$((sz * 2))
|
||||
sips -z "$dbl" "$dbl" "$ICON_PNG" --out "$ICONSET/icon_${sz}x${sz}@2x.png" >/dev/null 2>&1
|
||||
done
|
||||
iconutil -c icns "$ICONSET" -o "/tmp/TigreAppIcon.icns"
|
||||
rm -rf "$ICONSET" "$ICON_PNG"
|
||||
echo " Icone OK."
|
||||
|
||||
# 4) Montar o bundle .app
|
||||
echo "[3/4] Montando o bundle..."
|
||||
rm -rf "$APP_DIR"
|
||||
mkdir -p "$MACOS_DIR" "$RES_DIR"
|
||||
cp "$BIN" "$MACOS_DIR/$APP_NAME"
|
||||
cp "/tmp/TigreAppIcon.icns" "$RES_DIR/AppIcon.icns"
|
||||
|
||||
cat > "$CONTENTS/Info.plist" <<PLIST
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleName</key>
|
||||
<string>Tigre</string>
|
||||
<key>CFBundleDisplayName</key>
|
||||
<string>Tigre</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.genial.tigre</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>0.1.0</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>0.1.0</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${APP_NAME}</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string>AppIcon</string>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
<string>14.0</string>
|
||||
<key>LSUIElement</key>
|
||||
<false/>
|
||||
<key>NSHighResolutionCapable</key>
|
||||
<true/>
|
||||
<key>LSApplicationCategoryType</key>
|
||||
<string>public.app-category.productivity</string>
|
||||
</dict>
|
||||
</plist>
|
||||
PLIST
|
||||
|
||||
echo " Bundle montado."
|
||||
|
||||
# 5) Assinatura ad-hoc (sem identity de Developer ID, suficiente p/ uso local)
|
||||
echo "[4/4] Assinatura ad-hoc..."
|
||||
codesign --force --deep -s - "$APP_DIR" 2>&1 | sed 's/^/ /' || true
|
||||
echo " Pronto: $APP_DIR"
|
||||
echo
|
||||
echo " Para lançar: open \"$APP_DIR\""
|
||||
echo " Para remover: rm -rf \"$APP_DIR\""
|
||||
echo
|
||||
Reference in New Issue
Block a user