# frozen_string_literal: true require_relative 'plantillas' module ADN class GeneradorProy def self.nuevo(tipo, titulo, opciones) unless Plantillas.existe?(tipo) puts "✗ Tipo inválido: #{tipo}" return end titulo_base = titulo titulo_base = tipo.capitalize if titulo_base.nil? || titulo_base.empty? # Remover espacios para el filename manteniendo legibilidad titulo_archivo = titulo_base.gsub(/\s+/, '-') proy_id = opciones[:proy] fase_id = opciones[:fase] # Construir el prefijo del nombre del archivo prefijos = [] prefijos << proy_id if proy_id && proy_id.is_a?(String) && !proy_id.empty? prefijos << fase_id if fase_id && fase_id.is_a?(String) && !fase_id.empty? prefijo_str = prefijos.empty? ? "" : "#{prefijos.join('.')}_" nombre_archivo = "#{prefijo_str}#{titulo_archivo}.md" # Determinar el directorio de destino dir_base = File.expand_path('../../../docs/proy', __dir__) FileUtils.mkdir_p(dir_base) unless Dir.exist?(dir_base) destino_dir = dir_base if proy_id && proy_id.is_a?(String) && !proy_id.empty? # Buscar carpetas que coincidan con el patrón P2601* require 'fileutils' coincidencias = Dir.glob(File.join(dir_base, "#{proy_id}*")).select { |f| File.directory?(f) } if coincidencias.any? destino_dir = coincidencias.first else # Crear directorio P2601_Nombre (si hay titulo le ponemos el titulo, sino solo P2601) destino_dir = File.join(dir_base, "#{proy_id}_#{titulo_archivo}") FileUtils.mkdir_p(destino_dir) end end ruta_completa = File.join(destino_dir, nombre_archivo) contenido = Plantillas.obtener(tipo) File.write(ruta_completa, contenido) puts "✓ Archivo generado: #{ruta_completa}" end end end