#!/bin/bash # inventory-project.sh - EPIC-008 # Genera inventario completo de un proyecto # Version: 1.0.0 set -e PROJECT=$1 PROJECT_PATH="/home/isem/workspace-v1/projects/$PROJECT" OUTPUT="$PROJECT_PATH/INVENTARIO.yml" # Colores RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # Validar argumento if [ -z "$PROJECT" ]; then echo -e "${RED}ERROR: Uso: $0 ${NC}" echo "Ejemplo: $0 gamilit" exit 1 fi # Validar proyecto existe if [ ! -d "$PROJECT_PATH" ]; then echo -e "${RED}ERROR: Proyecto '$PROJECT' no existe en $PROJECT_PATH${NC}" exit 1 fi echo "=== INVENTARIO DE PROYECTO: $PROJECT ===" echo "" # Contar archivos en docs/ if [ -d "$PROJECT_PATH/docs" ]; then docs_total=$(find "$PROJECT_PATH/docs" -type f 2>/dev/null | wc -l) docs_md=$(find "$PROJECT_PATH/docs" -name "*.md" 2>/dev/null | wc -l) docs_yml=$(find "$PROJECT_PATH/docs" \( -name "*.yml" -o -name "*.yaml" \) 2>/dev/null | wc -l) docs_json=$(find "$PROJECT_PATH/docs" -name "*.json" 2>/dev/null | wc -l) else docs_total=0 docs_md=0 docs_yml=0 docs_json=0 fi # Contar archivos en orchestration/ if [ -d "$PROJECT_PATH/orchestration" ]; then orch_total=$(find "$PROJECT_PATH/orchestration" -type f 2>/dev/null | wc -l) orch_md=$(find "$PROJECT_PATH/orchestration" -name "*.md" 2>/dev/null | wc -l) orch_yml=$(find "$PROJECT_PATH/orchestration" \( -name "*.yml" -o -name "*.yaml" \) 2>/dev/null | wc -l) orch_json=$(find "$PROJECT_PATH/orchestration" -name "*.json" 2>/dev/null | wc -l) else orch_total=0 orch_md=0 orch_yml=0 orch_json=0 fi # Detectar archivos obsoletos obsoletos_list=$(find "$PROJECT_PATH" -type f \( \ -name "*.old" -o \ -name "*.backup" -o \ -name "*.bak" -o \ -name "*LEGACY*" -o \ -name "OLD-*" -o \ -name "DEPRECATED-*" -o \ -name ".DS_Store" -o \ -name "Thumbs.db" \ \) 2>/dev/null || true) obsoletos_count=0 if [ -n "$obsoletos_list" ]; then obsoletos_count=$(echo "$obsoletos_list" | grep -c . || echo 0) fi # Detectar referencias a rutas antiguas (workspace/ sin -v1) refs_antiguas=$(grep -r "/home/isem/workspace/" "$PROJECT_PATH" --include="*.md" --include="*.yml" --include="*.yaml" 2>/dev/null | grep -v "workspace-v1" | wc -l || echo 0) # Verificar archivos SIMCO clave herencia="false" contexto="false" map_docs="false" status="false" [ -f "$PROJECT_PATH/orchestration/00-guidelines/HERENCIA-SIMCO.md" ] && herencia="true" [ -f "$PROJECT_PATH/orchestration/00-guidelines/CONTEXTO-PROYECTO.md" ] && contexto="true" [ -f "$PROJECT_PATH/docs/_MAP.md" ] && map_docs="true" [ -f "$PROJECT_PATH/orchestration/00-guidelines/PROJECT-STATUS.md" ] && status="true" # Mostrar resumen en consola echo "docs/:" echo " total: $docs_total" echo " markdown: $docs_md" echo " yaml: $docs_yml" echo " json: $docs_json" echo "" echo "orchestration/:" echo " total: $orch_total" echo " markdown: $orch_md" echo " yaml: $orch_yml" echo " json: $orch_json" echo "" echo "Problemas detectados:" echo " archivos_obsoletos: $obsoletos_count" echo " referencias_antiguas: $refs_antiguas" echo "" echo "Estado SIMCO:" echo " HERENCIA-SIMCO.md: $herencia" echo " CONTEXTO-PROYECTO.md: $contexto" echo " _MAP.md (docs): $map_docs" echo " PROJECT-STATUS.md: $status" # Listar archivos obsoletos si existen if [ "$obsoletos_count" -gt 0 ]; then echo "" echo -e "${YELLOW}Archivos obsoletos encontrados:${NC}" echo "$obsoletos_list" | while read -r file; do if [ -n "$file" ]; then echo " - $file" fi done fi # Generar YAML cat > "$OUTPUT" << EOF # Inventario generado por EPIC-008 proyecto: $PROJECT fecha: "$(date +%Y-%m-%d)" generado_por: "inventory-project.sh v1.0.0" inventario: docs: total: $docs_total por_tipo: markdown: $docs_md yaml: $docs_yml json: $docs_json orchestration: total: $orch_total por_tipo: markdown: $orch_md yaml: $orch_yml json: $orch_json problemas: archivos_obsoletos: $obsoletos_count referencias_antiguas: $refs_antiguas simco_faltantes: EOF # Agregar SIMCO faltantes [ "$herencia" = "false" ] && echo " - HERENCIA-SIMCO.md" >> "$OUTPUT" [ "$contexto" = "false" ] && echo " - CONTEXTO-PROYECTO.md" >> "$OUTPUT" [ "$map_docs" = "false" ] && echo " - _MAP.md en docs/" >> "$OUTPUT" [ "$status" = "false" ] && echo " - PROJECT-STATUS.md" >> "$OUTPUT" cat >> "$OUTPUT" << EOF estado_simco: herencia_simco: $herencia contexto_proyecto: $contexto map_docs: $map_docs project_status: $status EOF # Agregar lista de obsoletos si existen if [ "$obsoletos_count" -gt 0 ]; then echo "" >> "$OUTPUT" echo "archivos_obsoletos_lista:" >> "$OUTPUT" echo "$obsoletos_list" | while read -r file; do if [ -n "$file" ]; then echo " - \"$file\"" >> "$OUTPUT" fi done fi echo "" echo -e "${GREEN}Inventario generado: $OUTPUT${NC}"