# frozen_string_literal: true # ========================================================== # FILE: fxs/config_handler.rb # ========================================================== def cargar_configuracion unless File.exist?(APP_CFG_RUTA_ARCHIVO) puts "#{ICONO_WARN} Archivo de configuración de tareas no encontrado: #{APP_CFG_RUTA_ARCHIVO}." puts "#{ICONO_INFO} Usando configuración interna. Los cambios se guardarán en un nuevo archivo." # Si el archivo no existe, devuelve valores predeterminados (vacíos o un ejemplo) return [], [], true # Retorna tareas vacías, comandos vacíos y auto_avanzar en true end begin # Carga el archivo de configuración. Esto definirá TAREAS_CONFIG y COMANDOS_CONFIG load APP_CFG_RUTA_ARCHIVO unless defined?(TAREAS_CONFIG) && TAREAS_CONFIG.is_a?(Array) puts "#{ICONO_ERROR} TAREAS_CONFIG no está definida correctamente en '#{APP_CFG_RUTA_ARCHIVO}'." exit 1 end unless defined?(COMANDOS_CONFIG) && COMANDOS_CONFIG.is_a?(Array) puts "#{ICONO_ERROR} COMANDOS_CONFIG no está definida correctamente en '#{APP_CFG_RUTA_ARCHIVO}'." exit 1 end auto_avanzar = defined?(AUTO_AVANZAR_TAREA_MENU) ? AUTO_AVANZAR_TAREA_MENU : true return TAREAS_CONFIG, COMANDOS_CONFIG, auto_avanzar rescue LoadError, SyntaxError => e puts "#{ICONO_ERROR} Error cargando configuración desde '#{APP_CFG_RUTA_ARCHIVO}':\n#{e.message}" exit 1 end end def guardar_configuracion(tareas, comandos, auto_avanzar) begin File.open(APP_CFG_RUTA_ARCHIVO, 'w') do |f| f.puts "# frozen_string_literal: true\n" f.puts "# ==========================================================" f.puts "# Archivo de Configuración para #{APP_NOM_BASE}" f.puts "# Generado automáticamente el #{Time.now.strftime('%Y-%m-%d %H:%M:%S')}" f.puts "# ==========================================================\n" f.puts "AUTO_AVANZAR_TAREA_MENU = #{auto_avanzar}\n" f.puts "TAREAS_CONFIG = [" tareas.each do |tarea| f.puts " {" tarea.each { |key, value| f.puts " #{key}: #{value.inspect}," } f.puts " }," end f.puts "]\n" f.puts "COMANDOS_CONFIG = [" comandos.each do |comando| f.puts " {" comando.each do |key, value| if key == :tareas f.puts " #{key}: [#{value.map(&:inspect).join(', ')}]," else f.puts " #{key}: #{value.inspect}," end end f.puts " }," end f.puts "]" end puts "\n#{ICONO_OK} Configuración de tareas y comandos guardada en '#{APP_CFG_NOM_ARCHIVO}'." log :info, "Configuración de tareas y comandos actualizada y guardada por el usuario." sleep 1.5 return true rescue StandardError => e puts "\n#{ICONO_ERROR} No se pudo guardar la configuración: #{e.message}" log :error, "Fallo al guardar configuración de tareas y comandos: #{e.message}" sleep 2 return false end end