feat(okf-hub): relocar tooling OKF do Hub para Dev/Scripts (regra: scripts fora do vault)
This commit is contained in:
Executable
+95
@@ -0,0 +1,95 @@
|
||||
#!/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."
|
||||
Reference in New Issue
Block a user