#!/usr/bin/env bash
# Install RoboPark Pi Client on a Raspberry Pi
# Usage:
#   sudo ./install.sh --scheduler-url http://100.64.1.5:8080 \
#                     --enrollment-token <TOKEN>
set -euo pipefail

SCHEDULER_URL=""
ENROLLMENT_TOKEN=""

while [[ $# -gt 0 ]]; do
  case "$1" in
    --scheduler-url) SCHEDULER_URL="$2"; shift 2 ;;
    --enrollment-token) ENROLLMENT_TOKEN="$2"; shift 2 ;;
    *) echo "Unknown arg: $1"; exit 1 ;;
  esac
done

if [[ -z "$SCHEDULER_URL" || -z "$ENROLLMENT_TOKEN" ]]; then
  echo "Usage: $0 --scheduler-url URL --enrollment-token TOKEN"
  exit 1
fi

id "robopark" 2>/dev/null || useradd -r -s /bin/false robopark
install -d -m 755 -o robopark -g robopark /opt/robopark-pi-client
install -d -m 700 -o robopark -g robopark /etc/robopark
cp -r ./* /opt/robopark-pi-client/
chown -R robopark:robopark /opt/robopark-pi-client

sudo -u robopark python3 -m venv /opt/robopark-pi-client/.venv
/opt/robopark-pi-client/.venv/bin/pip install --upgrade pip
/opt/robopark-pi-client/.venv/bin/pip install -r /opt/robopark-pi-client/requirements.txt
# On Pi you typically want the full media stack:
/opt/robopark-pi-client/.venv/bin/pip install livekit livekit-api sounddevice numpy opencv-python av

cp /opt/robopark-pi-client/robopark-pi-client.service /etc/systemd/system/
systemctl daemon-reload
systemctl enable --now robopark-pi-client.service

echo "First-boot enrollment will run as part of the service start."
echo "Tail logs with: journalctl -u robopark-pi-client -f"