docs: CLAUDE.md v0.2.1 - FileWatcher, loadFromString API
- Documentación FileWatcher (mtime polling, checkForChanges) - Documentación loadFromString (defaults embebidos) - updateMtime para evitar auto-detectar cambios propios - Historial actualizado 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
ef45ce6934
commit
04462afc5c
1 changed files with 71 additions and 12 deletions
83
CLAUDE.md
83
CLAUDE.md
|
|
@ -26,9 +26,9 @@ PATH=/mnt/cello2/arno/re/recode/zig/zig-0.15.2/zig-x86_64-linux-0.15.2:$PATH zig
|
||||||
| Campo | Valor |
|
| Campo | Valor |
|
||||||
|-------|-------|
|
|-------|-------|
|
||||||
| **Nombre** | zcatconfig |
|
| **Nombre** | zcatconfig |
|
||||||
| **Version** | v0.1.0 |
|
| **Version** | v0.2.1 |
|
||||||
| **Fecha inicio** | 2025-12-17 |
|
| **Fecha inicio** | 2025-12-17 |
|
||||||
| **Estado** | EN DESARROLLO - Estructura inicial |
|
| **Estado** | FUNCIONAL - Integrado en zsimifactu |
|
||||||
| **Lenguaje** | Zig 0.15.2 |
|
| **Lenguaje** | Zig 0.15.2 |
|
||||||
| **Dependencias** | Ninguna (Zig puro) |
|
| **Dependencias** | Ninguna (Zig puro) |
|
||||||
|
|
||||||
|
|
@ -36,10 +36,12 @@ PATH=/mnt/cello2/arno/re/recode/zig/zig-0.15.2/zig-x86_64-linux-0.15.2:$PATH zig
|
||||||
|
|
||||||
**zcatconfig** es una libreria para gestion de configuracion declarativa:
|
**zcatconfig** es una libreria para gestion de configuracion declarativa:
|
||||||
- Definicion de variables con metadatos (tipo, default, descripcion, categoria)
|
- Definicion de variables con metadatos (tipo, default, descripcion, categoria)
|
||||||
- Generacion automatica de struct Config via comptime
|
- Persistencia a archivo de texto legible con comentarios
|
||||||
- Persistencia a archivo de texto legible
|
- Validacion de valores (rangos, enums, tipos)
|
||||||
- Validacion de valores
|
|
||||||
- Sistema Get/Set generico con inline for + @field
|
- Sistema Get/Set generico con inline for + @field
|
||||||
|
- **ConfigManager**: Gestor autonomo con observers y auto-save
|
||||||
|
- **FileWatcher**: Detecta cambios en archivo via mtime (hot-reload)
|
||||||
|
- **loadFromString**: Carga config desde string embebido
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
@ -169,20 +171,75 @@ PATH=/mnt/cello2/arno/re/recode/zig/zig-0.15.2/zig-x86_64-linux-0.15.2:$PATH zig
|
||||||
|
|
||||||
## PLAN DE TRABAJO
|
## PLAN DE TRABAJO
|
||||||
|
|
||||||
### Fase 1: Estructura base - COMPLETADA
|
### Fase 1: Estructura base ✅
|
||||||
- [x] Crear proyecto (build.zig, CLAUDE.md)
|
- [x] Crear proyecto (build.zig, CLAUDE.md)
|
||||||
- [x] Extraer types.zig de zsimifactu
|
- [x] Extraer types.zig de zsimifactu
|
||||||
- [x] Adaptar engine.zig (parametrizar variables y Config)
|
- [x] Adaptar engine.zig (parametrizar variables y Config)
|
||||||
- [x] Adaptar persistence.zig
|
- [x] Adaptar persistence.zig
|
||||||
|
|
||||||
### Fase 2: Generalizacion - COMPLETADA
|
### Fase 2: Generalizacion ✅
|
||||||
- [x] Engine generico con comptime
|
- [x] Engine generico con comptime
|
||||||
- [x] Tests unitarios (9 tests)
|
- [x] Tests unitarios
|
||||||
- [x] Documentacion API
|
- [x] Documentacion API
|
||||||
|
|
||||||
### Fase 3: Integracion - EN PROGRESO
|
### Fase 3: Integracion ✅
|
||||||
- [ ] Integrar en zsimifactu como dependencia
|
- [x] Integrar en zsimifactu como dependencia
|
||||||
- [ ] Verificar que zsimifactu funciona igual
|
- [x] Verificar que zsimifactu funciona igual
|
||||||
|
|
||||||
|
### Fase 4: ConfigManager ✅
|
||||||
|
- [x] ConfigManager con loadOrCreate, auto-save, observers
|
||||||
|
- [x] Sistema de observers con contexto
|
||||||
|
- [x] isDirty tracking
|
||||||
|
|
||||||
|
### Fase 5: FileWatcher + Utils ✅
|
||||||
|
- [x] FileWatcher para hot-reload (mtime polling)
|
||||||
|
- [x] loadFromString para defaults embebidos
|
||||||
|
- [x] updateMtime para evitar auto-detectar cambios propios
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## API PRINCIPAL
|
||||||
|
|
||||||
|
### ConfigManager (gestor autonomo)
|
||||||
|
|
||||||
|
```zig
|
||||||
|
const zcatconfig = @import("zcatconfig");
|
||||||
|
|
||||||
|
// Crear ConfigManager tipado
|
||||||
|
const MyConfigManager = zcatconfig.ConfigManager(&variables, MyConfig, "mi_app");
|
||||||
|
|
||||||
|
// Inicializar (carga o crea archivo)
|
||||||
|
var manager = try MyConfigManager.init(allocator, "config.txt");
|
||||||
|
defer manager.deinit(); // Auto-save si dirty
|
||||||
|
|
||||||
|
// Acceso
|
||||||
|
const cfg = manager.getConfig();
|
||||||
|
try manager.set("@mi_variable", "nuevo_valor");
|
||||||
|
|
||||||
|
// Observers
|
||||||
|
manager.addObserver(myCallback, my_context);
|
||||||
|
```
|
||||||
|
|
||||||
|
### FileWatcher (hot-reload)
|
||||||
|
|
||||||
|
```zig
|
||||||
|
var watcher = zcatconfig.FileWatcher.init("config.txt", 1000); // check cada 1s
|
||||||
|
|
||||||
|
// En main loop:
|
||||||
|
if (watcher.checkForChanges()) {
|
||||||
|
// Recargar configuracion
|
||||||
|
}
|
||||||
|
|
||||||
|
// Despues de guardar:
|
||||||
|
watcher.updateMtime(); // Evitar detectar nuestro propio cambio
|
||||||
|
```
|
||||||
|
|
||||||
|
### loadFromString (defaults embebidos)
|
||||||
|
|
||||||
|
```zig
|
||||||
|
const defaults = @embedFile("defaults.txt");
|
||||||
|
zcatconfig.loadFromString(&variables, Config, &config, defaults);
|
||||||
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
@ -197,4 +254,6 @@ PATH=/mnt/cello2/arno/re/recode/zig/zig-0.15.2/zig-x86_64-linux-0.15.2:$PATH zig
|
||||||
|
|
||||||
| Fecha | Version | Cambios |
|
| Fecha | Version | Cambios |
|
||||||
|-------|---------|---------|
|
|-------|---------|---------|
|
||||||
| 2025-12-17 | v0.1.0 | Proyecto creado, estructura inicial |
|
| 2025-12-18 | v0.2.1 | FileWatcher, loadFromString, updateMtime |
|
||||||
|
| 2025-12-17 | v0.2.0 | ConfigManager con observers, auto-save, isDirty |
|
||||||
|
| 2025-12-17 | v0.1.0 | Proyecto creado, Engine + persistence |
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue