From 3dd835eb51008b4d283af9b6b52197f86d3452db Mon Sep 17 00:00:00 2001 From: "R.Eugenio" Date: Wed, 24 Dec 2025 23:49:47 +0100 Subject: [PATCH] =?UTF-8?q?feat:=20setSilent()=20+=20opciones=20v=C3=A1lid?= =?UTF-8?q?as=20en=20comentarios=20config?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - setSilent(): Establece valor sin disparar observers Útil para carga masiva desde BD (evita writes innecesarios) - save(): Muestra opciones válidas en comentarios Ejemplo: # Modo validación NIF [Estricto,Permisivo,Desactivado] 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- src/zcatconfig.zig | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/zcatconfig.zig b/src/zcatconfig.zig index 570ce02..4abfe99 100644 --- a/src/zcatconfig.zig +++ b/src/zcatconfig.zig @@ -563,13 +563,20 @@ pub fn save( const value_len = value.len; const total_len = key_len + 2 + value_len; - if (total_len < 40 and v.description.len > 0) { + // Construir comentario con opciones válidas si existen + var comment_buf: [256]u8 = undefined; + const comment: []const u8 = if (v.auto_validate) |valid| + std.fmt.bufPrint(&comment_buf, "{s} [{s}]", .{ v.description, valid }) catch v.description + else + v.description; + + if (total_len < 40 and comment.len > 0) { const padding = 40 - total_len; const line = std.fmt.bufPrint(&line_buf, "{s}: {s}{s}# {s}\n", .{ v.config_key, value, spaces(padding), - v.description, + comment, }) catch unreachable; // Buffer 1024 es suficiente try file.writeAll(line); } else { @@ -760,6 +767,13 @@ pub fn ConfigManager( self.notifyObservers(change); } + /// Establece un valor SIN notificar observers + /// Útil para carga masiva desde BD (evita writes innecesarios) + pub fn setSilent(self: *Self, key: []const u8, value: []const u8) ConfigError!void { + try EngineType.set(&self.config, key, value); + self.dirty = true; + } + /// Busca variable por config_key fn findVariableByKey(key: []const u8) ?*const ConfigVariable { inline for (variables) |*v| {