104 lines
3.0 KiB
Bash
Executable File
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"
|