#!/bin/sh
#
# Gera a impressão digital do código de produção, para comparar com o
# repositório ANTES de qualquer deploy.
#
#   sh comparar-com-producao.sh > impressao-producao.txt
#
# Somente leitura. Não altera nada.
#
# ---------------------------------------------------------------------------
# POR QUE ISTO EXISTE
#
# Produção não está sob controle de versão — o que há é cópia do código, com
# backup em drive. O repositório foi criado a partir de uma cópia de julho de
# 2026.
#
# Se alguém alterou algo direto no servidor desde então, essa alteração **não
# está no repositório**. Fazer o deploy por cima sem saber disso apagaria o
# trabalho, em silêncio, e num sistema onde defeito significa dinheiro errado.
#
# Este script não decide nada: produz a lista de resumos por arquivo, para o
# outro lado comparar contra o repositório e apontar as diferenças.
# ---------------------------------------------------------------------------

set -u

RAIZ="${RAIZ:-$(pwd)}"

if [ ! -d "$RAIZ/module" ]; then
    echo "ERRO: $RAIZ/module não existe. Use RAIZ=/caminho/do/projeto." >&2
    exit 1
fi

echo "# Impressão digital do código de produção"
echo "# Servidor: $(hostname)"
echo "# Raiz:     $RAIZ"
echo "# Gerado:   $(date '+%Y-%m-%d %H:%M:%S')"
echo "#"
echo "# Formato: <resumo sha256>  <caminho relativo>"
echo "# Cobre module/, config/ e public/ (sem vendor, sem dados, sem uploads)."
echo ""

cd "$RAIZ" || exit 1

# vendor/ e data/ ficam de fora: o primeiro é reproduzível pelo composer.lock e
# o segundo é cache. Os diretórios de upload também saem — o que interessa aqui
# é o CÓDIGO, e comparar 1.146 arquivos enviados por usuário só faria ruído.
find module config public \
    -type f \
    \( -name '*.php' -o -name '*.phtml' -o -name '*.js' -o -name '*.css' \) \
    ! -path 'public/arquivos/*' \
    ! -path 'public/contratos/*' \
    ! -path 'public/banners/*' \
    ! -path 'public/assistentes/*' \
    ! -path 'public/vip-class/*' \
    ! -path 'public/visagismo/*' \
    ! -path 'public/layout/img/avatar/*' \
    ! -path 'public/logs/*' \
    2>/dev/null \
| sort \
| while read -r arquivo; do
    printf '%s  %s\n' "$(sha256sum "$arquivo" 2>/dev/null | cut -d' ' -f1)" "$arquivo"
done

echo ""
echo "# --- resumo ---"
echo "# arquivos: $(find module config public -type f \( -name '*.php' -o -name '*.phtml' \) 2>/dev/null | wc -l)"
