#!/bin/sh
#
# Roda a suite de caracterizacao nos DOIS bancos, e devolve o ambiente.
#
# POR QUE ISTO EXISTE, e a razao e de 30/08/2026: a mesma sequencia vinha sendo
# escrita a mao a cada rodada --
#
#     cp local.php /tmp/bak; cp local.postgres.php.dist local.php; phpunit; cp /tmp/bak local.php
#
# -- e uma execucao interrompida no meio deixou `local.php` apontando para o
# PostgreSQL. O `cp` de volta nunca rodou, e o proximo comando foi para o banco
# errado sem avisar. Ja tinha acontecido duas vezes antes, por outro caminho.
#
# O `trap` fecha esse buraco: a restauracao acontece na saida normal, no Ctrl-C
# e no kill. E o que `scripts/rodar-contrato.sh` ja fazia, e esta faltava.
#
# Uso:
#     sh scripts/rodar-caracterizacao.sh          # os dois bancos
#     sh scripts/rodar-caracterizacao.sh mysql    # so um
#     sh scripts/rodar-caracterizacao.sh postgres

set -e

CONFIG=config/autoload/local.php
GUARDADO=$(mktemp)
ALVO="${1:-ambos}"

cp "$CONFIG" "$GUARDADO"

restaurar() {
    cp "$GUARDADO" "$CONFIG"
    rm -f "$GUARDADO"
    rm -rf data/DoctrineORMModule/Proxy/*
    echo ""
    echo "  ambiente restaurado: $(grep -m1 "'host' =>" "$CONFIG" | tr -d ' ')"
}

trap restaurar EXIT INT TERM

falhou=0

rodar() {
    echo ""
    echo "=============================================================="
    echo "  caracterizacao contra $1"
    echo "=============================================================="

    # Os proxies sao gerados e ficam fora do versionamento. Deixa-los com os
    # do banco anterior ja rendeu HTTP 500 na primeira pagina, em 24/08.
    rm -rf data/DoctrineORMModule/Proxy/*

    docker compose exec -T app phpunit --testsuite caracterizacao || falhou=1
}

if [ "$ALVO" = "ambos" ] || [ "$ALVO" = "mysql" ]; then
    rodar MySQL
fi

if [ "$ALVO" = "ambos" ] || [ "$ALVO" = "postgres" ]; then
    cp config/autoload/local.postgres.php.dist "$CONFIG"
    rodar PostgreSQL
fi

if [ "$falhou" -eq 1 ]; then
    echo ""
    echo "  ALGUMA SUITE FALHOU -- veja acima qual."
    exit 1
fi

echo ""
echo "  as suites pedidas passaram."
