#!/bin/bash # okf-rename-index.sh — Fase 2: Renomeia INDEX.md → index.md no vault Hub # OKF §6: index.md é ficheiro reservado (lowercase) # Criado: 28-06-2026 HUB="/media/ealmeida/Dados/Hub" DRY_RUN=false LOG_FILE="$(dirname "$0")/okf-rename-index.log" # Modo dry-run com --dry-run if [[ "$1" == "--dry-run" ]]; then DRY_RUN=true echo "[DRY-RUN] Nenhum ficheiro será alterado." fi echo "=== okf-rename-index.sh — $(date -I) ===" | tee "$LOG_FILE" echo "Hub: $HUB" | tee -a "$LOG_FILE" echo "" | tee -a "$LOG_FILE" COUNT=0 ERRORS=0 # Encontrar todos os INDEX.md excluindo .stversions e node_modules while IFS= read -r -d '' INDEX_FILE; do DIR=$(dirname "$INDEX_FILE") TARGET="$DIR/index.md" # Verificar se já existe index.md (colisão) if [[ -f "$TARGET" ]]; then echo "[SKIP] Colisão: $TARGET já existe — manter INDEX.md" | tee -a "$LOG_FILE" ((ERRORS++)) continue fi if [[ "$DRY_RUN" == "true" ]]; then echo "[DRY] $INDEX_FILE → $TARGET" | tee -a "$LOG_FILE" else # Usar git mv para preservar histórico if git -C "$HUB" mv "${INDEX_FILE#$HUB/}" "${TARGET#$HUB/}" 2>>"$LOG_FILE"; then echo "[OK] $INDEX_FILE → $TARGET" | tee -a "$LOG_FILE" else echo "[ERRO] Falha: $INDEX_FILE" | tee -a "$LOG_FILE" ((ERRORS++)) continue fi fi ((COUNT++)) done < <(find "$HUB" -name "INDEX.md" \ -not -path "*/.stversions/*" \ -not -path "*/node_modules/*" \ -not -path "*/99-Arquivo/*" \ -print0) # Incluir 99-Arquivo separadamente (sem git mv — só rename simples) while IFS= read -r -d '' INDEX_FILE; do DIR=$(dirname "$INDEX_FILE") TARGET="$DIR/index.md" if [[ -f "$TARGET" ]]; then echo "[SKIP] Colisão: $TARGET já existe" | tee -a "$LOG_FILE" ((ERRORS++)) continue fi if [[ "$DRY_RUN" == "true" ]]; then echo "[DRY-ARQUIVO] $INDEX_FILE → $TARGET" | tee -a "$LOG_FILE" else if mv "$INDEX_FILE" "$TARGET" 2>>"$LOG_FILE"; then echo "[OK-ARQUIVO] $INDEX_FILE → $TARGET" | tee -a "$LOG_FILE" else echo "[ERRO-ARQUIVO] $INDEX_FILE" | tee -a "$LOG_FILE" ((ERRORS++)) continue fi fi ((COUNT++)) done < <(find "$HUB/99-Arquivo" -name "INDEX.md" \ -not -path "*/.stversions/*" \ -print0) echo "" | tee -a "$LOG_FILE" echo "=== Resultado ===" | tee -a "$LOG_FILE" echo "Renomeados: $COUNT" | tee -a "$LOG_FILE" echo "Erros/Colisoes: $ERRORS" | tee -a "$LOG_FILE" echo "" | tee -a "$LOG_FILE" if [[ "$DRY_RUN" == "false" && $COUNT -gt 0 ]]; then echo "=== Actualizar referencias internas ===" | tee -a "$LOG_FILE" # Substituir [INDEX.md] e (INDEX.md) por index.md nas referencias grep -rl "INDEX\.md" "$HUB" \ --include="*.md" \ --exclude-dir=".stversions" \ --exclude-dir="node_modules" | while read -r FILE; do sed -i 's/\bINDEX\.md\b/index.md/g' "$FILE" echo "[REF] $FILE" >> "$LOG_FILE" done echo "Referencias actualizadas — ver log para detalhes." | tee -a "$LOG_FILE" fi echo "" | tee -a "$LOG_FILE" echo "Log: $LOG_FILE"