#!/usr/bin/env bash
# Check if network boot is set as first priority 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: 0x2 = network, 0x1 = SD/eMMC. 0x21 = network first, then local storage.
WANT_BOOT_ORDER="0x21"

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 for network first: $WANT_BOOT_ORDER (0x2=network, 0x1=SD/eMMC; 0x21 = network then local)"

if [[ "$(echo "$BOOT_ORDER" | tr '[:upper:]' '[:lower:]')" == "$(echo "$WANT_BOOT_ORDER" | tr '[:upper:]' '[:lower:]')" ]]; then
  echo "Result: Network boot is set as first priority."
  exit 0
fi

echo "Result: Network boot is NOT first (current: $BOOT_ORDER). To set network first, set BOOT_ORDER=0x21 (e.g. via cloud-init first-boot or rpi-eeprom-config --edit)."
exit 2
