--- name: resolve_cpp_app_dir kind: function lang: bash domain: infra version: "1.1.0" purity: impure signature: "resolve_cpp_app_dir(app_name?: string) -> stdout: app_name\tapp_dir" description: "Resuelve el nombre y directorio absoluto de una app C++ del registry. Sin arg deduce desde CWD si esta dentro de apps//, cpp/apps// o projects/*/apps//. Con arg busca en las tres ubicaciones (apps/ canonical issue 0096 primero, luego cpp/apps/ legacy, luego projects/*/apps/). Imprime 'TAB' en stdout, exit 0; si no resuelve, lista apps disponibles en stderr y sale con exit 1." tags: [cpp, resolve, app, directory, infra, cpp-windows] uses_functions: [] uses_types: [] returns: [] returns_optional: false error_type: "error_go_core" imports: [] tested: false tests: [] test_file_path: "" file_path: "bash/functions/infra/resolve_cpp_app_dir.sh" params: - name: app_name desc: "Nombre de la app C++ a resolver (opcional). Sin arg se deduce desde el directorio actual si estamos dentro de apps//, cpp/apps// o projects/*/apps//." output: "Una linea TAB-separada '\\t' en stdout. En caso de error imprime ayuda a stderr y sale con exit 1." --- ## Ejemplo ```bash # Desde dentro de cpp/apps/chart_demo/ cd /home/lucas/fn_registry/cpp/apps/chart_demo resolve_cpp_app_dir # -> chart_demo\t/home/lucas/fn_registry/cpp/apps/chart_demo # Con argumento explicito resolve_cpp_app_dir registry_dashboard # -> registry_dashboard\t/home/lucas/fn_registry/cpp/apps/registry_dashboard # Capturar los dos campos resolved=$(resolve_cpp_app_dir graph_explorer) APP="$(echo "$resolved" | cut -f1)" APP_DIR="$(echo "$resolved" | cut -f2)" ``` ## Notas Busca en orden: 1. `$ROOT/apps/` con `CMakeLists.txt` — layout canonical post-issue 0096. 2. `$ROOT/cpp/apps/` — legacy pre-issue 0096. 3. `$ROOT/projects/*/apps/` — apps de un proyecto (primer match gana). Si ninguna ruta existe, imprime lista de apps disponibles (con prefijo de ubicacion) en stderr y sale con exit 1. Sourceable o ejecutable directamente. Helper interno `_list_cpp_apps` evita duplicar codigo en los paths de error. ### Growth log - v1.1.0 (2026-05-16) — busca tambien en `apps//` (canonical issue 0096). Antes solo cubria `cpp/apps//` y `projects/*/apps//`, lo que hacia que `./fn run compile_cpp_app ` fallara para apps movidas al layout canonical (ej. `dag_engine_ui`).