#!/usr/bin/env bash
# The one check that needs a real socket: boot a dedicated server, connect two
# bot clients over ENet, and assert the whole loop happened. ~35s, so it runs
# on push rather than every commit.
#
# Skip deliberately (e.g. pushing docs-only or WIP) with:
#   SKIP_SMOKE_HOOK=1 git push
set -uo pipefail
cd "$(git rev-parse --show-toplevel)"

if [[ "${SKIP_SMOKE_HOOK:-0}" == "1" ]]; then
  echo "pre-push: SKIP_SMOKE_HOOK=1, skipping smoke test"
  exit 0
fi

echo "pre-push: running tools/smoke.sh..."
if ! tools/smoke.sh; then
  echo
  echo "pre-push FAILED: end-to-end smoke test did not pass."
  echo "Push anyway with: SKIP_SMOKE_HOOK=1 git push"
  exit 1
fi
