#!/usr/bin/env bash
# Check if boot order is set as expected on a Pi 4 / CM4 (reTerminal).
# Run on the device: ./check-network-boot-priority.sh
# Or from your machine: ssh pi@<device-ip> 'bash -s' < scripts/check-network-boot-priority.sh

set -e
# BOOT_ORDER nibbles (right-to-left): 1=SD/eMMC, 2=network, f=restart.
# 0xf21 = eMMC first, then network, then restart.
WANT_BOOT_ORDER="0xf21"

get_config() {
  if command -v vcgencmd >/dev/null 2>&1; then
    vcgencmd bootloader_config 2>/dev/null || true
  fi
  if command -v rpi-eeprom-update >/dev/null 2>&1 && command -v rpi-eeprom-config >/dev/null 2>&1; then
    PEE="$(rpi-eeprom-update -l 2>/dev/null)"
    if [[ -n "$PEE" && -f "$PEE" ]]; then
      rpi-eeprom-config "$PEE" 2>/dev/null || true
    fi
  fi
}

BOOTCONF="$(get_config)"
BOOT_ORDER="$(echo "$BOOTCONF" | grep -oE 'BOOT_ORDER=[0-9A-Fa-fx]+' | head -1 | cut -d= -f2)"

if [[ -z "$BOOT_ORDER" ]]; then
  echo "Could not read EEPROM config (vcgencmd bootloader_config or rpi-eeprom-config)."
  echo "Is this a Raspberry Pi 4 or CM4 with rpi-eeprom / vcgencmd?"
  exit 1
fi

echo "BOOT_ORDER=$BOOT_ORDER (current)"
echo "Expected: $WANT_BOOT_ORDER (1=eMMC, 2=network, f=restart; eMMC first, then network)"

if [[ "$(echo "$BOOT_ORDER" | tr '[:upper:]' '[:lower:]')" == "$(echo "$WANT_BOOT_ORDER" | tr '[:upper:]' '[:lower:]')" ]]; then
  echo "Result: Boot order matches expected (eMMC first, then network)."
  exit 0
fi

echo "Result: Boot order does NOT match (current: $BOOT_ORDER, expected: $WANT_BOOT_ORDER). Set via rpi-eeprom-config --edit or cloud-init first-boot."
exit 2
