6ad82167bb
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2.7 KiB
2.7 KiB
name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, example, file_path, params, output
| name | kind | lang | domain | version | purity | signature | description | tags | uses_functions | uses_types | returns | returns_optional | error_type | imports | example | file_path | params | output | ||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| codegen_app_modules | function | py | infra | 1.0.0 | impure | generate(app_md: Path, modules_root: Path, app_name: str, out_path: Path) -> int | Reads app.md uses_modules + modules/<name>/module.md frontmatters, emits <app>_modules_generated.cpp with fn::app_modules_array[] + fn::app_modules_count. CMake hook for add_imgui_app. Pure YAML parsing, no registry.db dep. |
|
false | error_go_core |
|
python python/functions/infra/codegen_app_modules.py \ --app-md apps/data_factory/app.md \ --modules-root modules \ --app-name data_factory \ --out cpp/build/apps/data_factory/data_factory_modules_generated.cpp | python/functions/infra/codegen_app_modules.py |
|
Exit code: 0 si OK, 2 si OK pero algun modulo declarado no existe (warning), >0 si error. |
Ejemplo
Generar el .cpp para data_factory:
python python/functions/infra/codegen_app_modules.py \
--app-md apps/data_factory/app.md \
--modules-root modules \
--app-name data_factory \
--out /tmp/data_factory_modules_generated.cpp
Si data_factory/app.md declara uses_modules: [data_table_cpp], el .cpp generado es:
// Auto-generated by codegen_app_modules.py — do not edit.
// App: data_factory
// Source of truth: apps/data_factory/app.md (uses_modules)
#include "app_modules.h"
namespace fn {
const ModuleInfo app_modules_array[] = {
{ "data_table", "1.4.0", "Reusable C++ ImGui module..." },
};
const unsigned long app_modules_count = 1;
} // namespace fn
Cuando usarla
CMake hook automatico — la macro add_imgui_app la invoca al configurar el build. Apps no la llaman manualmente. Manual override: solo si quieres regenerar fuera del flujo cmake (debugging).
Gotchas
- Resuelve
<name>_cppstrippeando el sufijo_cpp/_py/_ts/_bash/_go. Mismo patron queGenerateModuleID. - Si un modulo declarado en
uses_modulesno existe, emite warning a stderr y EXIT=2 (no falla el build). - Idempotente: solo reescribe si el contenido cambia. Evita rebuilds innecesarios cuando los modulos no cambiaron.
- Requiere
pyyaml. Disponible enpython/.venvdel registry.