#!/bin/sh
# Init for provisioning initramfs: bring up minimal env and run provisioning-client.sh.
# PROVISIONING_SERVER can be set via kernel cmdline: provisioning_server=http://10.20.50.1:5000

set -e
export PATH=/bin:/usr/bin
export LD_LIBRARY_PATH=/lib

echo "=== CM4 provisioning initramfs ==="

# Minimal filesystem
mount -t proc none /proc
mount -t sysfs none /sys
mount -t devtmpfs none /dev
mkdir -p /dev/pts
mount -t devpts none /dev/pts

# Kernel might have brought up eth0 via ip=dhcp; ensure we have an IP
if ! ip addr show | grep -q 'inet .* scope global'; then
  echo "Getting DHCP lease..."
  udhcpc -f -q -i eth0 -n 2>/dev/null || true
fi

# Allow kernel cmdline to override: provisioning_server=... and rescue mode
RESCUE=0
for arg in $(cat /proc/cmdline); do
  case "$arg" in
    provisioning_server=*) export PROVISIONING_SERVER="${arg#*=}"; ;;
    provisioning_rescue=1) RESCUE=1; ;;
  esac
done
PROVISIONING_SERVER="${PROVISIONING_SERVER:-http://10.20.50.1:5000}"
export PROVISIONING_SERVER

if [ "$RESCUE" -eq 1 ]; then
  echo "=== RESCUE MODE (provisioning_rescue=1) ==="
  echo "Run /rescue-eeprom.sh to mount eMMC and change boot order (rpi-eeprom-config), then reboot."
  echo "Or run /bin/sh for a shell."
  exec /bin/sh -i
fi

echo "Provisioning server: $PROVISIONING_SERVER"
echo "Running provisioning client..."
exec /bin/sh /provisioning-client.sh
