workspace/devtools/scripts/validate-structure.sh
rckrdmrd ea1879f4ad feat: Initial workspace structure with multi-level Git configuration
- Configure workspace Git repository with comprehensive .gitignore
- Add Odoo as submodule for ERP reference code
- Include documentation: SETUP.md, GIT-STRUCTURE.md
- Add gitignore templates for projects (backend, frontend, database)
- Structure supports independent repos per project/subproject level

Workspace includes:
- core/ - Reusable patterns, modules, orchestration system
- projects/ - Active projects (erp-suite, gamilit, trading-platform, etc.)
- knowledge-base/ - Reference code and patterns (includes Odoo submodule)
- devtools/ - Development tools and templates
- customers/ - Client implementations template

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-08 10:44:23 -06:00

168 lines
6.0 KiB
Bash
Executable File

#!/bin/bash
# validate-structure.sh - Valida la estructura del workspace
# Uso: ./validate-structure.sh [proyecto]
set -e
WORKSPACE_ROOT="${HOME}/workspace"
PROJECT=$1
ERRORS=0
WARNINGS=0
# Colores
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'
echo -e "${BLUE}=== Validación de Estructura del Workspace ===${NC}"
echo ""
# Función para verificar directorio
check_dir() {
local path=$1
local required=$2
if [ -d "$path" ]; then
echo -e " ${GREEN}${NC} $path"
return 0
else
if [ "$required" = "required" ]; then
echo -e " ${RED}${NC} $path (FALTA - requerido)"
((ERRORS++))
return 1
else
echo -e " ${YELLOW}${NC} $path (no existe)"
((WARNINGS++))
return 0
fi
fi
}
# Función para verificar archivo
check_file() {
local path=$1
local required=$2
if [ -f "$path" ]; then
echo -e " ${GREEN}${NC} $path"
return 0
else
if [ "$required" = "required" ]; then
echo -e " ${RED}${NC} $path (FALTA - requerido)"
((ERRORS++))
return 1
else
echo -e " ${YELLOW}${NC} $path (no existe)"
((WARNINGS++))
return 0
fi
fi
}
# Validar estructura principal
echo -e "${BLUE}1. Validando estructura principal...${NC}"
check_dir "${WORKSPACE_ROOT}/core" "required"
check_dir "${WORKSPACE_ROOT}/projects" "required"
check_dir "${WORKSPACE_ROOT}/customers" "required"
check_dir "${WORKSPACE_ROOT}/knowledge-base" "required"
check_dir "${WORKSPACE_ROOT}/workspaces" "required"
check_dir "${WORKSPACE_ROOT}/devtools" "required"
check_file "${WORKSPACE_ROOT}/README.md" "required"
echo ""
# Validar core
echo -e "${BLUE}2. Validando core/...${NC}"
check_dir "${WORKSPACE_ROOT}/core/orchestration" "required"
check_dir "${WORKSPACE_ROOT}/core/orchestration/agents" "required"
check_dir "${WORKSPACE_ROOT}/core/orchestration/directivas" "required"
check_dir "${WORKSPACE_ROOT}/core/orchestration/templates" "required"
check_dir "${WORKSPACE_ROOT}/core/orchestration/claude" "required"
check_dir "${WORKSPACE_ROOT}/core/modules" "required"
check_dir "${WORKSPACE_ROOT}/core/standards" "required"
check_file "${WORKSPACE_ROOT}/core/README.md" "required"
check_file "${WORKSPACE_ROOT}/core/orchestration/README.md" "required"
echo ""
# Validar knowledge-base
echo -e "${BLUE}3. Validando knowledge-base/...${NC}"
check_dir "${WORKSPACE_ROOT}/knowledge-base/patterns" "required"
check_dir "${WORKSPACE_ROOT}/knowledge-base/reference" "required"
check_dir "${WORKSPACE_ROOT}/knowledge-base/guides" "required"
check_dir "${WORKSPACE_ROOT}/knowledge-base/snippets" "optional"
check_dir "${WORKSPACE_ROOT}/knowledge-base/lessons-learned" "optional"
echo ""
# Validar devtools
echo -e "${BLUE}4. Validando devtools/...${NC}"
check_dir "${WORKSPACE_ROOT}/devtools/scripts" "required"
check_dir "${WORKSPACE_ROOT}/devtools/templates" "required"
check_dir "${WORKSPACE_ROOT}/devtools/docker" "optional"
echo ""
# Si se especificó un proyecto, validarlo
if [ -n "$PROJECT" ]; then
echo -e "${BLUE}5. Validando proyecto: ${PROJECT}...${NC}"
PROJECT_PATH="${WORKSPACE_ROOT}/projects/${PROJECT}"
if [ ! -d "$PROJECT_PATH" ]; then
echo -e " ${RED}${NC} Proyecto '${PROJECT}' no existe"
((ERRORS++))
else
# Estructura de apps
check_dir "${PROJECT_PATH}/apps" "required"
# Estructura de docs
check_dir "${PROJECT_PATH}/docs" "required"
check_dir "${PROJECT_PATH}/docs/00-overview" "required"
check_dir "${PROJECT_PATH}/docs/01-requerimientos" "required"
check_dir "${PROJECT_PATH}/docs/02-especificaciones-tecnicas" "required"
# Estructura de orchestration
check_dir "${PROJECT_PATH}/orchestration" "required"
check_dir "${PROJECT_PATH}/orchestration/00-guidelines" "required"
check_dir "${PROJECT_PATH}/orchestration/01-analisis" "required"
check_dir "${PROJECT_PATH}/orchestration/02-planeacion" "required"
check_dir "${PROJECT_PATH}/orchestration/03-tareas" "required"
check_dir "${PROJECT_PATH}/orchestration/estados" "required"
check_dir "${PROJECT_PATH}/orchestration/inventarios" "required"
# Archivos requeridos
check_file "${PROJECT_PATH}/README.md" "required"
check_file "${PROJECT_PATH}/orchestration/PROXIMA-ACCION.md" "required"
check_file "${PROJECT_PATH}/orchestration/estados/REGISTRO-SUBAGENTES.json" "required"
check_file "${PROJECT_PATH}/orchestration/00-guidelines/CONTEXTO-PROYECTO.md" "required"
fi
echo ""
else
# Validar todos los proyectos existentes
echo -e "${BLUE}5. Validando proyectos existentes...${NC}"
for project_dir in "${WORKSPACE_ROOT}/projects"/*; do
if [ -d "$project_dir" ]; then
project_name=$(basename "$project_dir")
echo -e " ${BLUE}${project_name}${NC}"
# Verificaciones básicas
[ -f "${project_dir}/README.md" ] && echo -e " ${GREEN}${NC} README.md" || { echo -e " ${YELLOW}${NC} README.md"; ((WARNINGS++)); }
[ -d "${project_dir}/orchestration" ] && echo -e " ${GREEN}${NC} orchestration/" || { echo -e " ${RED}${NC} orchestration/"; ((ERRORS++)); }
[ -d "${project_dir}/docs" ] && echo -e " ${GREEN}${NC} docs/" || { echo -e " ${RED}${NC} docs/"; ((ERRORS++)); }
[ -d "${project_dir}/apps" ] && echo -e " ${GREEN}${NC} apps/" || { echo -e " ${RED}${NC} apps/"; ((ERRORS++)); }
fi
done
echo ""
fi
# Resumen
echo -e "${BLUE}=== Resumen ===${NC}"
if [ $ERRORS -eq 0 ] && [ $WARNINGS -eq 0 ]; then
echo -e "${GREEN}✓ Validación exitosa: Estructura correcta${NC}"
exit 0
elif [ $ERRORS -eq 0 ]; then
echo -e "${YELLOW}⚠ Validación con advertencias: ${WARNINGS} warnings${NC}"
exit 0
else
echo -e "${RED}✗ Validación fallida: ${ERRORS} errores, ${WARNINGS} warnings${NC}"
exit 1
fi