#!/bin/bash
set -e
TS=$(date +%Y%m%d_%H%M%S)
STAGE="/home/admin/builds/feature-deploy-invite_532fix_$TS"
RUNTIME_ROOT="/home/admin/docker-projects/sub2api"
RUNTIME_BACKEND="$RUNTIME_ROOT/backend"
TRASH="/home/admin/.trash/invite-rule-532-$TS"
mkdir -p "$STAGE" "$TRASH"

tar xzf /tmp/feature-deploy-invite-backend-current.tar.gz -C "$STAGE"

echo '=== staged backend rule check ==='
sed -n '23,29p' "$STAGE/backend/internal/service/invite_commission.go"

echo
echo '=== build staged backend ==='
cd "$STAGE/backend"
/usr/local/go/bin/go build -buildvcs=false -tags embed -o server ./cmd/server/
ls -lh server

echo
echo '=== backup current runtime binary ==='
cp "$RUNTIME_BACKEND/server" "$TRASH/server.before"
cp "$STAGE/backend/server" "$RUNTIME_BACKEND/server"
chmod 755 "$RUNTIME_BACKEND/server"

echo
echo '=== listener-based stop before script restart ==='
pid=$(sudo lsof -tiTCP:8090 -sTCP:LISTEN | head -n1 || true)
echo "listener_pid=$pid"
if [ -n "$pid" ]; then
  kill -TERM "$pid" || true
  sleep 3
fi
if sudo lsof -tiTCP:8090 -sTCP:LISTEN >/dev/null 2>&1; then
  pid=$(sudo lsof -tiTCP:8090 -sTCP:LISTEN | head -n1)
  echo "force_kill_pid=$pid"
  kill -KILL "$pid" || true
  sleep 1
fi
if sudo lsof -tiTCP:8090 -sTCP:LISTEN >/dev/null 2>&1; then
  echo 'port 8090 still occupied'
  sudo ss -ltnp | grep 8090 || true
  exit 1
fi

echo
echo '=== start via script ==='
cd "$RUNTIME_ROOT/deploy"
bash start-sub2api.sh

echo
echo '=== local health ==='
curl -fsS http://127.0.0.1:8090/health
echo

echo '=== current listener ==='
pid=$(sudo lsof -tiTCP:8090 -sTCP:LISTEN | head -n1)
ps -fp "$pid"
readlink -f "/proc/$pid/exe"
