feat(matilda): matilda-apply — puente del plan a la ejecución

Traduce un Plan de reconciliación a ApplySteps concretos: por cada
acción, los archivos a escribir en el servidor y los comandos a
correr. Contenedores → docker rm/run; vhosts → archivo nginx +
reload; hosts → sin pasos (son destino de conexión, no algo a
aplicar). steps_to_script() emite un script bash único con heredocs.

Sigue agnóstico de transporte — ejecutar los pasos (local, SSH o vía
matilda-ghost) es la capa de I/O. La demo CLI ahora imprime el script.

6 tests; matilda llega de la declaración al script ejecutable.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
sergio
2026-05-20 20:18:20 +00:00
parent 22a0ae8c58
commit 5b9d8107fc
7 changed files with 249 additions and 4 deletions
+1
View File
@@ -16,3 +16,4 @@ path = "src/main.rs"
matilda-core = { path = "../../modules/matilda/matilda-core" }
matilda-config = { path = "../../modules/matilda/matilda-config" }
matilda-plan = { path = "../../modules/matilda/matilda-plan" }
matilda-apply = { path = "../../modules/matilda/matilda-apply" }
+8
View File
@@ -85,6 +85,14 @@ fn main() {
);
}
rule("script de aplicación (lo que correría en el servidor)");
let steps = matilda_apply::plan_to_steps(&p, &desired);
if steps.is_empty() {
println!(" nada que aplicar.");
} else {
print!("{}", matilda_apply::steps_to_script(&steps));
}
let broken = desired.broken_vhosts();
rule("consistencia");
if broken.is_empty() {