5e6a974a5d
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
3.5 KiB
3.5 KiB
name, kind, lang, domain, version, purity, signature, description, tags, params, output, uses_functions, uses_types, returns, returns_optional, error_type, imports, tested, tests, test_file_path, file_path
| name | kind | lang | domain | version | purity | signature | description | tags | params | output | uses_functions | uses_types | returns | returns_optional | error_type | imports | tested | tests | test_file_path | file_path | ||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| export_hub_icons | function | py | infra | 1.0.0 | impure | export_hub_icons(out_dir: str, *, size: int = 64, registry_root: str | None = None) -> dict | Rasteriza iconos PNG para todas las apps C++/imgui del registry y los escribe en un directorio de salida. Consume registry.db para listar apps, lee icon.phosphor + icon.accent de cada app.md y usa la misma logica visual de generate_app_icon (fondo redondeado accent + glyph Phosphor blanco al 70%). |
|
|
dict con ok=True, count=N (PNGs escritos), out_dir (ruta absoluta), skipped (lista de {name, reason} para apps omitidas). |
|
false | error_go_core |
|
false | python/functions/infra/export_hub_icons.py |
Ejemplo
# Exportar iconos 64px al directorio local_files/icons del hub launcher (Windows via WSL)
python/.venv/bin/python3 -c "
import sys; sys.path.insert(0, 'python/functions')
from infra.export_hub_icons import export_hub_icons
print(export_hub_icons('/mnt/c/Users/lucas/Desktop/apps/app_hub_launcher/local_files/icons'))
"
# Exportar iconos a /tmp para smoke test
python/.venv/bin/python3 -c "
import sys; sys.path.insert(0, 'python/functions')
from infra.export_hub_icons import export_hub_icons
import json
print(json.dumps(export_hub_icons('/tmp/hub_icons_test'), indent=2))
"
# Via CLI directo con tamaño personalizado
cd /home/lucas/fn_registry
python/.venv/bin/python3 python/functions/infra/export_hub_icons.py /tmp/hub_icons --size 128
Cuando usarla
Despues de compilar y desplegar app_hub_launcher a Windows Desktop, antes de lanzar la app: ejecutar esta funcion para generar los PNGs que el hub carga via fn::gl_texture_load al arrancar. Tambien util para regenerar los iconos tras cambiar el campo icon: en algun app.md o tras añadir una nueva app imgui al registry.
Gotchas
- Requiere que
sources/phosphor-core/este clonado en la raiz del registry (git clone --depth=1 https://github.com/phosphor-icons/core.git sources/phosphor-core). Si falta, todas las apps se omiten con "Phosphor SVG not found". - Las apps sin campo
icon:en suapp.mdusan el icono por defecto (app-window, accent#64748b) — no se omiten. cairosvgrequierelibcairo2instalado en el sistema (apt install libcairo2-deven Debian/Ubuntu). En WSL suele estar disponible si se uso anteriormentegenerate_app_icon.- El campo
icon.phosphordebe ser el nombre del glyph Phosphor sin sufijo de weight (ej."chart-bar", no"chart-bar-fill"). El sufijo-fill.svgse añade internamente. out_diren rutas Windows desde WSL debe usar/mnt/c/...— no rutas Win32 directas.- Apps con
dir_pathque apuntan a rutas fuera del registry (ej.cpp/apps/shaders_lab) se tratan igual:root / dir_path / "app.md". Si la app no esta clonada localmente, suapp.mdfalta y se omite.