7913116a8e
- .claude/agents/fn-analizador/SKILL.md - .claude/agents/fn-constructor/SKILL.md - .claude/agents/fn-executor/SKILL.md - .claude/agents/fn-mejorador/SKILL.md - .claude/agents/fn-orquestador/SKILL.md - .claude/agents/fn-recopilador/SKILL.md - .claude/commands/app.md - .claude/commands/compile.md - .claude/commands/cpp-app.md - .claude/commands/create_functions.md - ... Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
75 lines
3.3 KiB
Markdown
75 lines
3.3 KiB
Markdown
---
|
|
description: "Compila app del registry (C++ o Wails Go), copia el .exe a Desktop/apps/<app>/ y relanza en Windows. Wrapper sobre compile_cpp_app o compile_wails_app segun framework declarado en app.md."
|
|
---
|
|
|
|
# /compile — Compila app C++ o Wails y la copia al escritorio de Windows
|
|
|
|
Wrapper sobre 2 pipelines del registry segun el framework:
|
|
|
|
- **C++ (imgui / cmake)** → `compile_cpp_app_bash_pipelines`. Cross-compile MinGW + assets/enrichers/runtime + taskkill, NO relanza.
|
|
- **Wails Go (matrix_client_pc, matrix_admin_panel, etc.)** → `compile_wails_app_bash_pipelines`. `wails build -platform windows/amd64` con `-tags goolm` si E2EE + taskkill + **RELANZA** la app tras copy.
|
|
|
|
Toda la logica vive en el registry (resolver app desde CWD/arg, build, deploy con preservacion de `local_files/`).
|
|
|
|
## Dispatch
|
|
|
|
```bash
|
|
cd $HOME/fn_registry
|
|
|
|
# Detecta framework via wails.json o CMakeLists.txt en el dir del app
|
|
APP="$ARGUMENTS"
|
|
RESOLVED=$(bash -c '
|
|
source bash/functions/infra/resolve_cpp_app_dir.sh
|
|
resolve_cpp_app_dir "'"$APP"'"
|
|
' 2>/dev/null) || true
|
|
APP_DIR="$(echo "$RESOLVED" | cut -f2)"
|
|
|
|
if [ -n "$APP_DIR" ] && [ -f "$APP_DIR/wails.json" ]; then
|
|
./fn run compile_wails_app "$ARGUMENTS"
|
|
elif [ -n "$APP_DIR" ] && [ -f "$APP_DIR/CMakeLists.txt" ]; then
|
|
./fn run compile_cpp_app "$ARGUMENTS"
|
|
else
|
|
echo "ERROR: no se detecto framework (falta wails.json o CMakeLists.txt en $APP_DIR)" >&2
|
|
exit 1
|
|
fi
|
|
```
|
|
|
|
## Argumento
|
|
|
|
`$ARGUMENTS` — opcional. Nombre de app (ej: `chart_demo`, `matrix_client_pc`).
|
|
|
|
- Sin argumento: deduce desde `pwd` si estas dentro de `cpp/apps/<X>/`, `apps/<X>/` o `projects/*/apps/<X>/`.
|
|
- Si no se puede deducir y no se pasa argumento, lista las apps disponibles en stderr y aborta.
|
|
|
|
## Que hace el pipeline (C++)
|
|
|
|
1. `resolve_cpp_app_dir_bash_infra` — resuelve `<app_name>` y `<dir absoluto>`.
|
|
2. Verifica `CMakeLists.txt`.
|
|
3. `build_cpp_windows_bash_infra <app>` — cross-compila con MinGW.
|
|
4. `deploy_cpp_exe_to_windows_bash_infra <app> <dir>`:
|
|
- `taskkill.exe /IM <app>.exe /F`.
|
|
- Copia `<app>.exe` + DLLs.
|
|
- rsync `assets/`, `enrichers/`, `runtime/` (si aplica).
|
|
- Preserva `local_files/`.
|
|
- **NO** relanza.
|
|
|
|
## Que hace el pipeline (Wails)
|
|
|
|
1. `resolve_cpp_app_dir_bash_infra` (reusado — sirve para Wails apps tambien).
|
|
2. Verifica `wails.json` + `go.mod`.
|
|
3. Detecta `-tags goolm` automaticamente (grep `matrix_crypto_init` en `app.md` o `build:tags` en `wails.json`).
|
|
4. `wails build -platform windows/amd64 [-tags goolm]`.
|
|
5. `deploy_wails_exe_to_windows_bash_infra <app> <dir>`:
|
|
- `taskkill.exe /IM <app>.exe /F`.
|
|
- Copia `<app>.exe` (+ `appicon.ico` si existe).
|
|
- **Relanza** via `cmd.exe /c start "" <app>.exe`.
|
|
- Preserva `local_files/`.
|
|
|
|
## Notas
|
|
|
|
- Solo target Windows hoy. Linux ya lo da `wails build` / `cpp/build/` nativo.
|
|
- Variables override-ables: `BUILD_WIN`, `WIN_DESKTOP_APPS`, `FN_REGISTRY_ROOT`.
|
|
- Si la app C++ no esta registrada en `cpp/CMakeLists.txt`, el build falla — registrar siguiendo `.claude/rules/cpp_apps.md` §5.
|
|
- Si la app Wails falla build con `no required module provides package`, correr `go mod tidy` en el dir del app primero.
|
|
- Para tocar la logica: editar `bash/functions/{infra,pipelines}/{resolve_cpp_app_dir,build_cpp_windows,deploy_{cpp,wails}_exe_to_windows,compile_{cpp,wails}_app}.sh`, no este wrapper.
|