#!/bin/bash
# liber-boot-status — show current Rock 5B SD extlinux default + available labels
set -euo pipefail

CONF_LIVE="/boot/extlinux/extlinux.conf"
CONF_SD_FALLBACK_DEV="/dev/mmcblk1p3"
SD_MOUNTPOINT="/mnt/sd-extlinux-tmp"

CONF=""
MOUNTED_BY_US=0

# Try live conf first (if currently booted from SD)
if [ -r "$CONF_LIVE" ]; then
    CONF="$CONF_LIVE"
fi

# Fallback: mount SD partition read-only
if [ -z "$CONF" ] && [ -b "$CONF_SD_FALLBACK_DEV" ]; then
    mkdir -p "$SD_MOUNTPOINT"
    mount -o ro "$CONF_SD_FALLBACK_DEV" "$SD_MOUNTPOINT"
    MOUNTED_BY_US=1
    if [ -r "$SD_MOUNTPOINT/boot/extlinux/extlinux.conf" ]; then
        CONF="$SD_MOUNTPOINT/boot/extlinux/extlinux.conf"
    fi
fi

cleanup() {
    if [ "$MOUNTED_BY_US" = "1" ]; then
        umount "$SD_MOUNTPOINT" 2>/dev/null || true
        rmdir "$SD_MOUNTPOINT" 2>/dev/null || true
    fi
}
trap cleanup EXIT

if [ -z "$CONF" ]; then
    echo "ERROR: extlinux.conf not found on live SD nor fallback ${CONF_SD_FALLBACK_DEV}" >&2
    exit 2
fi

DEFAULT=$(awk '/^default[[:space:]]/ {print $2; exit}' "$CONF")
TIMEOUT=$(awk '/^timeout[[:space:]]/ {print $2; exit}' "$CONF")
LABELS=$(awk '/^label[[:space:]]/ {print $2}' "$CONF")

echo "extlinux.conf: $CONF"
echo "default:       ${DEFAULT:-<none>}"
echo "timeout:       ${TIMEOUT:-<none>}"
echo
echo "available labels:"
for l in $LABELS; do
    if [ "$l" = "$DEFAULT" ]; then
        echo "  * $l (active)"
    else
        echo "    $l"
    fi
done
