[P2604-S13] Consolidar core/ — lógica de dominio a submódulos CLI

Arquitectura antes:
  core/nodos_info.rb    → usado por 4 CLIs
  core/ejecutor_remoto.rb → usado por proceso.rb
  core/triggers.rb      → usado por triggers.rb
  core/eventos.rb       → usado por triggers.rb
  core/configurador.rb  → usado por backup.rb

Arquitectura después:
  cli/nodos/info.rb       ← submódulo de nodos
  cli/ssh/ejecutor.rb     ← submódulo de ssh
  cli/triggers/motor.rb   ← submódulo de triggers
  cli/triggers/eventos.rb ← submódulo de triggers
  cli/backup/configurador.rb ← submódulo de backup

core/ queda limpio con solo infraestructura genuina:
  colores, constants, error_handler, logger, help_formatter,
  conciliador (transversal), validador (obsoleto)

- 15 tests pasan sin regresiones
- Evento 1078 (17:14→17:17)
This commit is contained in:
Ricardo Monla
2026-03-15 17:19:14 -03:00
parent f902b4aa89
commit a5f71df15d
15 changed files with 31 additions and 15 deletions
+50
View File
@@ -0,0 +1,50 @@
# frozen_string_literal: true
require 'yaml'
require 'fileutils'
module ADN
class Configurador
CONFIG_PATH = File.join(__dir__, '..', 'config', 'config.yml')
def self.leer
return {} unless File.exist?(CONFIG_PATH)
YAML.load_file(CONFIG_PATH) || {}
rescue StandardError => e
warn "Error leyendo configuración: #{e.message}"
{}
end
def self.guardar(config)
FileUtils.mkdir_p(File.dirname(CONFIG_PATH))
File.write(CONFIG_PATH, config.to_yaml)
true
rescue StandardError => e
warn "Error guardando configuración: #{e.message}"
false
end
def self.obtener(ruta_punto, default = nil)
config = leer
partes = ruta_punto.split('.')
valor = config
partes.each do |p|
valor = valor[p] if valor.is_a?(Hash)
return default if valor.nil?
end
valor
end
def self.establecer(ruta_punto, nuevo_valor)
config = leer
partes = ruta_punto.split('.')
temp = config
partes[0...-1].each do |p|
temp[p] ||= {}
temp = temp[p]
end
temp[partes.last] = nuevo_valor
guardar(config)
end
end
end