#!/usr/bin/env bash
# Restart the bot (and optionally the job loop) if it is not running.
# cPanel cron, every minute:
#   * * * * * /home/USER/project/scripts/keepalive.sh bot
#   * * * * * /home/USER/project/scripts/keepalive.sh jobs
set -uo pipefail
cd "$(dirname "$0")/.."
ROOT="$(pwd)"
TARGET="${1:-bot}"

case "$TARGET" in
  bot)  PATTERN="bot/main.py";        CMD="$ROOT/scripts/start_bot.sh" ;;
  jobs) PATTERN="scripts/jobs.py loop"; CMD="$ROOT/scripts/start_jobs.sh" ;;
  *)    echo "usage: keepalive.sh [bot|jobs]" >&2; exit 1 ;;
esac

if pgrep -f -- "$PATTERN" >/dev/null 2>&1; then
  exit 0
fi

mkdir -p "$ROOT/logs"
echo "$(date '+%Y-%m-%d %H:%M:%S') restarting $TARGET" >> "$ROOT/logs/keepalive.log"
nohup "$CMD" >> "$ROOT/logs/$TARGET.log" 2>&1 &
