#!/usr/bin/env bash
set -Eeuo pipefail

REPO="/home/shire3d/ARMOR"
OUTPUT="HDMI-2"
LOG="$HOME/shire-mini-autostart.log"

exec >>"$LOG" 2>&1

echo
echo "===== $(date --iso-8601=seconds) SHIRE MINI AUTOSTART ====="

[ "$(hostname)" = "Work" ] || {
  echo "FAIL: Wrong host."
  exit 1
}

export DISPLAY=:0
export XAUTHORITY=/home/ray/.Xauthority

for _ in $(seq 1 60); do
  xdpyinfo >/dev/null 2>&1 && break
  sleep 1
done

xdpyinfo >/dev/null 2>&1 || {
  echo "FAIL: Desktop display did not become available."
  exit 1
}

xrandr --query |
  grep -q "^${OUTPUT} connected" || {
    echo "FAIL: Required output ${OUTPUT} is not connected."
    exit 1
  }

echo "Configuring ${OUTPUT} as the SHiRE appliance display."

xrandr \
  --output "$OUTPUT" \
  --primary \
  --mode 1920x1080 \
  --scale 1x1 \
  --transform none \
  --panning 0x0

sleep 2

GEOMETRY="$(
  xrandr --current |
  awk -v output="$OUTPUT" '
    $1 == output && $2 == "connected" {
      print $3
      exit
    }
  '
)"

MODE="${GEOMETRY%%+*}"

[ "$MODE" = "1920x1080" ] || {
  echo "FAIL: ${OUTPUT} mode is ${MODE:-unknown}."
  exit 1
}

if pgrep -f \
  '^/home/shire3d/ARMOR/venv/bin/python(3)? /home/shire3d/ARMOR/main.py$' \
  >/dev/null
then
  echo "INFO: SHiRE is already running."
  exit 0
fi

echo "Launching SHiRE on ${OUTPUT} at ${MODE}."
exec "$REPO/scripts/start_armor_mini.sh"
