#!/bin/bash
# Run once on a fresh Vultr Ubuntu 22.04 instance (root user).
# This is the Anthropic-API-key version of the bot — deployed on its OWN
# standalone server, fully decoupled from the subscription-login version
# so concurrent clone jobs on both bots can't OOM each other.
# Usage: cd /srv/site-clones/slackbot && bash setup.sh
set -e

echo "=== 1. System packages ==="
apt update && apt install -y python3 python3-venv python3-pip curl git wget nginx

echo "=== 2. Install Node.js (required by Claude Code) ==="
curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
apt install -y nodejs

echo "=== 3. Install Claude Code CLI ==="
npm install -g @anthropic-ai/claude-code

echo "=== 4. Create service user + directory structure ==="
# -r alone does NOT create a home dir, but claude needs one for ~/.claude
# config — so create it explicitly and point the user at it.
id -u clonebot &>/dev/null || useradd -r -m -d /home/clonebot -s /usr/sbin/nologin clonebot
mkdir -p /home/clonebot
chown clonebot:clonebot /home/clonebot
mkdir -p /srv/slackbot   # holds .env only — secrets stay outside git

echo "=== 5. Python venv + deps ==="
cd /srv/site-clones/slackbot
python3 -m venv venv
venv/bin/pip install -r requirements.txt

echo "=== 6. Set up .env ==="
if [ ! -f /srv/slackbot/.env ]; then
    cp /srv/site-clones/slackbot/.env.example /srv/slackbot/.env
    echo ""
    echo ">>> Edit /srv/slackbot/.env with:"
    echo "      - SLACK_BOT_TOKEN / SLACK_APP_TOKEN from a NEW Slack App"
    echo "        (needed so /newclonejob2 can be registered independently"
    echo "        of the existing /newclonejob command on the main bot)"
    echo "      - ANTHROPIC_AUTH_TOKEN / ANTHROPIC_BASE_URL / ANTHROPIC_MODEL for this version's auth"
fi
chown -R clonebot:clonebot /srv/site-clones /srv/slackbot

echo "=== 7. Install systemd service ==="
cp /srv/site-clones/slackbot/clonebot.service /etc/systemd/system/
systemctl daemon-reload
systemctl enable clonebot

echo "=== 8. Install nginx site ==="
cp /srv/site-clones/slackbot/nginx-site-clones.conf /etc/nginx/sites-available/site-clones
ln -sf /etc/nginx/sites-available/site-clones /etc/nginx/sites-enabled/site-clones
rm -f /etc/nginx/sites-enabled/default
nginx -t && systemctl restart nginx

echo ""
echo "=== Done! Next steps: ==="
echo "  1. Edit /srv/slackbot/.env — add SLACK_BOT_TOKEN, SLACK_APP_TOKEN, ANTHROPIC_AUTH_TOKEN, ANTHROPIC_BASE_URL, ANTHROPIC_MODEL, SERVER_URL"
echo "  2. Note: ANTHROPIC_AUTH_TOKEN in the env file means you can skip 'claude login'"
echo "  3. Run: sudo systemctl start clonebot"
echo "  4. Check logs: journalctl -u clonebot -f"
