#!/bin/sh
# Rebuild the example .hex files for /tools/mcu-sim/ with arduino-cli (Arduino Uno, ATmega328P,
# 16 MHz). Needs the arduino:avr core and the Servo and Adafruit_NeoPixel libraries:
#   arduino-cli core install arduino:avr
#   arduino-cli lib install Servo "Adafruit NeoPixel"
# The Arduino IDE 2 app bundles arduino-cli; this script finds it if it isn't on PATH.
set -e
cd "$(dirname "$0")"
CLI=${ARDUINO_CLI:-$(command -v arduino-cli || true)}
[ -n "$CLI" ] || CLI="/Applications/Arduino IDE.app/Contents/Resources/app/lib/backend/resources/arduino-cli"
[ -x "$CLI" ] || { echo "arduino-cli not found (set ARDUINO_CLI)"; exit 1; }
FQBN=${FQBN:-arduino:avr:uno}
OUT=$(mktemp -d)
# the IDE keeps its bundled libraries (Servo among them) where arduino-cli doesn't look by default
LIBS=""
[ -d "$HOME/Library/Arduino15/libraries" ] && LIBS="--libraries $HOME/Library/Arduino15/libraries"
for dir in */; do
  name=${dir%/}
  [ -f "$name/$name.ino" ] || continue
  echo "== $name"
  "$CLI" compile --fqbn "$FQBN" $LIBS --output-dir "$OUT/$name" "$name" | sed -n '/Sketch uses/p'
  cp "$OUT/$name/$name.ino.hex" "$name.hex"
done
rm -rf "$OUT"
"$CLI" version
