Files
fn_registry/.claude/commands/compile.md
T
egutierrez 2a3d780347 feat(doctor): add fn doctor CLI + 14 functions for system management
Adds `fn doctor` read-only diagnostic command with subcommands artefacts,
services, sync, uses-functions, unused, and --json flag for agents.
Each subcommand wraps a registry function in functions/infra/.

New functions:
- artefact_doctor, services_status, pc_locations_drift,
  audit_uses_functions, find_unused_functions (Go diagnostics)
- backup_sqlite_db, rotate_backups, wait_for_http, wait_for_port,
  port_kill, tail_journal, pre_commit_hook_install (bash utilities)
- notify_telegram (Go HTTP)
- backup_all pipeline (tag launcher)

Plus prior session leftovers (scan_secrets_in_dirty, append_diary_entry,
git utilities, http_session_cookie_middleware, compile/full-git pipelines).

Fixes pc_locations_drift filepath.Join bug with absolute dir_path.
Documents fn doctor in CLAUDE.md, .claude/rules/fn_doctor.md (rule 23),
docs/architecture.md, CHANGELOG.md (2026-05-07), and diary entry.

First fn doctor uses-functions run found drift in 7/12 apps (deuda
para sincronizar app.md con imports reales).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-07 01:42:10 +02:00

2.1 KiB

/compile — Compila app C++ y la copia al escritorio de Windows

Wrapper sobre el pipeline compile_cpp_app_bash_pipelines. Toda la lógica vive en el registry (resolver app desde CWD/arg, cross-compile MinGW, copiar exe + DLLs + assets/ + enrichers/ + runtime/ a /mnt/c/Users/lucas/Desktop/apps/<app>/, taskkill previo, preservar local_files/).

cd /home/lucas/fn_registry
./fn run compile_cpp_app "$ARGUMENTS"

Argumento

$ARGUMENTS — opcional. Nombre de app (ej: chart_demo).

  • Sin argumento: deduce desde pwd si estás dentro de cpp/apps/<X>/ o projects/*/apps/<X>/.
  • Si no se puede deducir y no se pasa argumento, el pipeline lista las apps disponibles en stderr y aborta.

Qué hace el pipeline

  1. resolve_cpp_app_dir_bash_infra — resuelve <app_name> y <dir absoluto> desde arg o CWD.
  2. Verifica CMakeLists.txt en el dir resuelto.
  3. build_cpp_windows_bash_infra <app> — cross-compila el target específico con cpp/build/windows/ (configura toolchain mingw-w64.cmake la primera vez).
  4. deploy_cpp_exe_to_windows_bash_infra <app> <dir>:
    • taskkill.exe /IM <app>.exe /F (pre-autorizado).
    • Copia <app>.exe + DLLs al top-level de Desktop/apps/<app>/.
    • rsync cpp/build/windows/apps/<app>/assets/Desktop/apps/<app>/assets/.
    • rsync <app_dir>/enrichers/assets/enrichers/ si existe.
    • Si app.md declara python_runtime: true, regenera runtime/ con tools/freeze_python_runtime.sh y rsync a assets/runtime/.
    • Copia gx-cli/gx-cli.exe si existen.
    • NUNCA toca local_files/ (estado del usuario).
  5. Imprime ls -lh del .exe final.

Notas

  • Solo target Windows hoy. Android / Linux quedan fuera (Linux ya lo da cpp/build/).
  • Variables override-ables: BUILD_WIN, WIN_DESKTOP_APPS, FN_REGISTRY_ROOT.
  • Si la app no está registrada en cpp/CMakeLists.txt, cmake --build --target <app> falla. Registrar siguiendo .claude/rules/cpp_apps.md §5.
  • Para tocar la lógica: editar bash/functions/{infra,pipelines}/{resolve_cpp_app_dir,deploy_cpp_exe_to_windows,compile_cpp_app}.sh, no este wrapper.