memlnaut-nisps/scripts/build-and-flash-firmware.sh

68 lines
1.4 KiB
Bash
Raw Normal View History

2026-04-15 17:32:32 +02:00
#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
usage() {
cat <<'EOF'
Usage:
scripts/build-and-flash-firmware.sh
scripts/build-and-flash-firmware.sh [variant]
scripts/build-and-flash-firmware.sh --variant VARIANT [mountpoint]
2026-04-15 17:32:32 +02:00
If no mountpoint is provided, the flash step auto-detects a standard UF2
bootloader location such as /run/media/$USER/RP2350 or /run/media/$USER/RPI-RP2.
EOF
}
if [[ "${1:-}" == "-h" || "${1:-}" == "--help" ]]; then
usage
exit 0
fi
source "$SCRIPT_DIR/firmware-common.sh"
load_firmware_variants
variant_arg="${MEMLNAUT_FIRMWARE_VARIANT:-}"
mountpoint=""
while [[ $# -gt 0 ]]; do
case "$1" in
--variant)
if [[ $# -lt 2 ]]; then
echo "error: --variant requires a value" >&2
exit 1
fi
variant_arg="$2"
shift 2
;;
--variant=*)
variant_arg="${1#*=}"
shift
;;
*)
if [[ -z "$variant_arg" ]] && resolve_firmware_variant "$1" >/dev/null 2>&1; then
variant_arg="$1"
elif [[ -z "$mountpoint" ]]; then
mountpoint="$1"
else
usage >&2
exit 1
fi
shift
;;
esac
done
if [[ -n "$variant_arg" ]]; then
"$SCRIPT_DIR/build-firmware.sh" --variant "$variant_arg"
else
"$SCRIPT_DIR/build-firmware.sh"
fi
if [[ -n "$mountpoint" ]]; then
"$SCRIPT_DIR/flash-firmware.sh" "$mountpoint"
2026-04-15 17:32:32 +02:00
else
"$SCRIPT_DIR/flash-firmware.sh"
fi