Files
scripts/okf-hub/okf-rename-index.sh
T

104 lines
3.0 KiB
Bash
Executable File

#!/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"