#!/bin/bash # ============================================================================= # validate-project-structure.sh # Validar estructura de proyecto segun estandar EPIC-011 # Sistema: NEXUS v3.4 + SIMCO # ============================================================================= set -e PROJECT_PATH="${1:-.}" PROJECT_NAME=$(basename "$PROJECT_PATH") # Colores RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color ERRORS=0 WARNINGS=0 echo "==============================================" echo "Validando: $PROJECT_NAME" echo "Ruta: $PROJECT_PATH" echo "==============================================" echo "" # ----------------------------------------------------------------------------- # Funcion para verificar existencia # ----------------------------------------------------------------------------- check_exists() { local path="$1" local type="$2" # "dir" o "file" local required="$3" # "required" o "recommended" local name="$4" if [ "$type" = "dir" ]; then if [ -d "$path" ]; then echo -e "${GREEN}[OK]${NC} $name" return 0 fi else if [ -f "$path" ]; then echo -e "${GREEN}[OK]${NC} $name" return 0 fi fi if [ "$required" = "required" ]; then echo -e "${RED}[ERROR]${NC} Falta: $name" ((ERRORS++)) || true return 1 else echo -e "${YELLOW}[WARN]${NC} Recomendado: $name" ((WARNINGS++)) || true return 0 fi } # ----------------------------------------------------------------------------- # Validacion de orchestration/ # ----------------------------------------------------------------------------- echo "--- Verificando orchestration/ ---" check_exists "$PROJECT_PATH/orchestration" "dir" "required" "orchestration/" check_exists "$PROJECT_PATH/orchestration/00-guidelines" "dir" "required" "orchestration/00-guidelines/" # Archivos obligatorios en 00-guidelines echo "" echo "--- Archivos obligatorios ---" check_exists "$PROJECT_PATH/orchestration/00-guidelines/CONTEXTO-PROYECTO.md" "file" "required" "CONTEXTO-PROYECTO.md" check_exists "$PROJECT_PATH/orchestration/00-guidelines/HERENCIA-SIMCO.md" "file" "required" "HERENCIA-SIMCO.md" check_exists "$PROJECT_PATH/orchestration/00-guidelines/PROJECT-STATUS.md" "file" "required" "PROJECT-STATUS.md" # Inventarios echo "" echo "--- Inventarios ---" check_exists "$PROJECT_PATH/orchestration/inventarios" "dir" "required" "orchestration/inventarios/" check_exists "$PROJECT_PATH/orchestration/inventarios/MASTER_INVENTORY.yml" "file" "recommended" "MASTER_INVENTORY.yml" # Trazas (recomendado) echo "" echo "--- Trazas ---" check_exists "$PROJECT_PATH/orchestration/trazas" "dir" "recommended" "orchestration/trazas/" # README echo "" echo "--- Documentacion ---" check_exists "$PROJECT_PATH/orchestration/README.md" "file" "recommended" "orchestration/README.md" check_exists "$PROJECT_PATH/docs/_MAP.md" "file" "recommended" "docs/_MAP.md" # ----------------------------------------------------------------------------- # Validar contenido de HERENCIA-SIMCO.md # ----------------------------------------------------------------------------- echo "" echo "--- Validando rutas en HERENCIA-SIMCO.md ---" HERENCIA_FILE="$PROJECT_PATH/orchestration/00-guidelines/HERENCIA-SIMCO.md" if [ -f "$HERENCIA_FILE" ]; then # Verificar que no tenga rutas obsoletas (workspace sin -v1) if grep -q "/home/isem/workspace/" "$HERENCIA_FILE" 2>/dev/null; then if ! grep -q "workspace-v1" "$HERENCIA_FILE" 2>/dev/null; then echo -e "${RED}[ERROR]${NC} Rutas obsoletas encontradas en HERENCIA-SIMCO.md" ((ERRORS++)) || true else echo -e "${GREEN}[OK]${NC} Rutas correctas en HERENCIA-SIMCO.md" fi else echo -e "${GREEN}[OK]${NC} Sin rutas obsoletas en HERENCIA-SIMCO.md" fi else echo -e "${YELLOW}[SKIP]${NC} HERENCIA-SIMCO.md no existe" fi # ----------------------------------------------------------------------------- # Resumen # ----------------------------------------------------------------------------- echo "" echo "==============================================" echo "RESUMEN: $PROJECT_NAME" echo "==============================================" echo -e "Errores: ${RED}$ERRORS${NC}" echo -e "Warnings: ${YELLOW}$WARNINGS${NC}" echo "" if [ $ERRORS -eq 0 ]; then echo -e "${GREEN}Estado: PASS${NC}" exit 0 else echo -e "${RED}Estado: FAIL${NC}" exit 1 fi