[P2604] Fase 15: Optimización IA e integración de herramienta candados. Sincronización de bitácoras y actualización de planes de proyecto.
This commit is contained in:
@@ -0,0 +1,156 @@
|
||||
#!/usr/bin/env ruby
|
||||
# ADN CLI v2 - Generador de proyectos y planes
|
||||
# Uso:
|
||||
# ./adn/tools/run proy crear P2605
|
||||
# ./adn/tools/run plan crear P2605.01.01
|
||||
|
||||
require 'fileutils'
|
||||
require 'date'
|
||||
|
||||
module ADN
|
||||
|
||||
# =========================
|
||||
# UTILIDADES
|
||||
# =========================
|
||||
module Utils
|
||||
def self.today
|
||||
Date.today.strftime('%Y-%m-%d')
|
||||
end
|
||||
|
||||
def self.ensure_dir(path)
|
||||
FileUtils.mkdir_p(path) unless Dir.exist?(path)
|
||||
end
|
||||
end
|
||||
|
||||
# =========================
|
||||
# TEMPLATE ENGINE
|
||||
# =========================
|
||||
module Templates
|
||||
|
||||
def self.proyecto(codigo)
|
||||
<<~MD
|
||||
# #{codigo} - Nombre del Proyecto
|
||||
|
||||
**Tipo:** Proyecto
|
||||
**Código:** #{codigo}
|
||||
**Versión:** 1.0
|
||||
**Estado:** ⏳ Planificado
|
||||
**Fecha de creación:** #{Utils.today}
|
||||
|
||||
## 🎯 Objetivo
|
||||
Describir objetivo.
|
||||
|
||||
## 📦 Alcance
|
||||
- Incluye:
|
||||
- No incluye:
|
||||
|
||||
## 📅 Planes asociados
|
||||
- #{codigo}.01.01
|
||||
|
||||
## 📚 Referencias
|
||||
-
|
||||
MD
|
||||
end
|
||||
|
||||
def self.plan(codigo)
|
||||
<<~MD
|
||||
# #{codigo} - Nombre del Plan
|
||||
|
||||
**Tipo:** Plan
|
||||
**Código:** #{codigo}
|
||||
**Versión:** 1.0
|
||||
**Estado:** ⏳ Planificado
|
||||
**Fecha de creación:** #{Utils.today}
|
||||
|
||||
## 📋 Resumen Ejecutivo
|
||||
Descripción general.
|
||||
|
||||
## 🎯 Objetivo
|
||||
Objetivo del plan.
|
||||
|
||||
## 📅 Fases
|
||||
|
||||
### FASE 1
|
||||
- [ ] Tarea 1
|
||||
|
||||
## 🧪 Validación
|
||||
Cómo probar.
|
||||
|
||||
## 📊 Métricas
|
||||
- Métrica: Objetivo
|
||||
|
||||
## 🔄 Rollback
|
||||
- Escenario: Acción
|
||||
MD
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
# =========================
|
||||
# GENERADORES
|
||||
# =========================
|
||||
class Generador
|
||||
|
||||
BASE_PATH = "docs/proy"
|
||||
|
||||
def self.crear_proyecto(codigo)
|
||||
path = "#{BASE_PATH}/#{codigo}"
|
||||
Utils.ensure_dir(path)
|
||||
|
||||
file = "#{path}/#{codigo}.md"
|
||||
File.write(file, Templates.proyecto(codigo))
|
||||
|
||||
puts "✅ Proyecto creado: #{file}"
|
||||
end
|
||||
|
||||
def self.crear_plan(codigo)
|
||||
proyecto = codigo.split('.').first
|
||||
path = "#{BASE_PATH}/#{proyecto}/plan"
|
||||
Utils.ensure_dir(path)
|
||||
|
||||
file = "#{path}/#{codigo}.md"
|
||||
File.write(file, Templates.plan(codigo))
|
||||
|
||||
puts "✅ Plan creado: #{file}"
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
# =========================
|
||||
# CLI
|
||||
# =========================
|
||||
class CLI
|
||||
def self.run(args)
|
||||
comando = args[0]
|
||||
accion = args[1]
|
||||
codigo = args[2]
|
||||
|
||||
case comando
|
||||
when "proy"
|
||||
if accion == "crear"
|
||||
Generador.crear_proyecto(codigo)
|
||||
else
|
||||
puts "Acción no válida para proy"
|
||||
end
|
||||
|
||||
when "plan"
|
||||
if accion == "crear"
|
||||
Generador.crear_plan(codigo)
|
||||
else
|
||||
puts "Acción no válida para plan"
|
||||
end
|
||||
|
||||
else
|
||||
puts "Comando no reconocido"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
# =========================
|
||||
# ENTRYPOINT
|
||||
# =========================
|
||||
if __FILE__ == $0
|
||||
ADN::CLI.run(ARGV)
|
||||
end
|
||||
Reference in New Issue
Block a user