#!/usr/bin/env bash
# git-Hook: laesst dieselben Pruefungen laufen, die in der CI die Gates sind.
#
# Gedacht als Ersatz, solange Gitea Actions nicht aktiviert ist -- und danach
# als Vorpruefung, die einen Durchlauf spart.
#
# Installation:  bash tests/hooks/install.sh
# Umgehen:       git push --no-verify

REPO="$(git rev-parse --show-toplevel)"
cd "$REPO" || exit 0

echo "pre-push: Pruefungen aus der CI (mit --no-verify zu umgehen)"
FAIL=0

lauf() {
    printf '  %-28s ' "$1"
    if out=$(eval "$2" 2>&1); then
        echo "ok"
    else
        echo "FEHLGESCHLAGEN"
        echo "$out" | sed 's/^/      /'
        FAIL=1
    fi
}

if command -v php >/dev/null 2>&1; then
    lauf "tests/lint.sh (PHP-Syntax)"  "bash tests/lint.sh"
    lauf "tests/unit/run.php"          "php tests/unit/run.php"
else
    echo "  php nicht gefunden -- Syntax- und Unit-Tests uebersprungen"
fi
lauf "tests/guard.sh"                  "bash tests/guard.sh"

if [ "$FAIL" -ne 0 ]; then
    echo
    echo "pre-push: abgebrochen. Mit 'git push --no-verify' trotzdem senden." >&2
    exit 1
fi
echo "pre-push: alles gruen"
