#!/bin/bash # okf-gen-logs.sh — Fase 4: Gera log.md por directório top-level # OKF §7: log.md com histórico de alterações por data ISO, newest first # Criado: 28-06-2026 HUB="/media/ealmeida/Dados/Hub" DAYS=90 # Últimos N dias de histórico DRY_RUN=false if [[ "$1" == "--dry-run" ]]; then DRY_RUN=true echo "[DRY-RUN] Nenhum ficheiro será criado." fi # Directórios top-level a processar (excluir .stversions, node_modules, tmp) TOP_DIRS=( "00-Inbox" "03-Propostas" "04-Stack" "05-Projectos" "06-Operacoes" "07-Clientes" "90-Templates" "99-Arquivo" ) SINCE=$(date -d "-${DAYS} days" +%Y-%m-%d) generate_log() { local dir="$1" local dir_path="$HUB/$dir" local log_path="$dir_path/log.md" if [[ ! -d "$dir_path" ]]; then echo "[SKIP] $dir não existe" return fi echo "A gerar log.md para $dir (últimos ${DAYS} dias desde ${SINCE})…" # Obter commits que tocaram nesta pasta local git_log git_log=$(git -C "$HUB" log \ --since="$SINCE" \ --format="%cd|%s" \ --date=format:"%Y-%m-%d" \ -- "$dir/" 2>/dev/null) if [[ -z "$git_log" ]]; then echo " [INFO] Sem commits no período para $dir" git_log="" fi # Agrupar por data e gerar markdown local log_content log_content="# Log de Actualizações — $dir $(echo "$git_log" | awk -F'|' ' { date=$1; msg=$2 if (date != prev_date) { if (prev_date != "") print "" print "## " date prev_date=date } # Classificar entrada if (msg ~ /^(feat|add|create|novo|cria)/) prefix="**Creation**" else if (msg ~ /^(fix|corr|resolv)/) prefix="**Fix**" else if (msg ~ /^(archive|arquiv)/) prefix="**Archive**" else if (msg ~ /^(delete|remov|apag)/) prefix="**Deletion**" else prefix="**Update**" print "* " prefix ": " msg }' 2>/dev/null || echo "_(sem histórico git no período)_") " if [[ "$DRY_RUN" == "true" ]]; then echo " [DRY] $log_path" echo " Primeiras linhas: $(echo "$log_content" | head -5)" else echo "$log_content" > "$log_path" echo " [OK] $log_path" fi } echo "=== okf-gen-logs.sh — $(date -I) ===" echo "Hub: $HUB" echo "" for dir in "${TOP_DIRS[@]}"; do generate_log "$dir" done echo "" echo "=== Concluído ===" echo "log.md gerado em ${#TOP_DIRS[@]} directórios."