#!/bin/sh

SHAREDIR="/usr/share/snek"

SNEKMEGA="$SHAREDIR/snek-uno-1.5.hex"
USBSERIAL="$SHAREDIR/Arduino-usbserial-atmega16u2-Uno-Rev3.hex"
PORT=/dev/ttyACM0
ISP=usbtiny
HEX=default

action="snek"

mode=arg

for i in "$@"; do
    case "$mode" in
	arg)
	    case "$i" in
		snek|usbserial)
		    action="$i"
		    ;;
		-port|--port)
		    mode=port
		    ;;
		-isp|--isp)
		    mode=isp
		    ;;
		-hex|--hex)
		    mode=hex
		    ;;
		*)
		      echo "Usage: $0 {-port /dev/ttyACM0} {-isp avrisp2} {-hex snek-uno.hex} {snek|usbserial}" 1>&2
		      exit 1
		      ;;
	    esac
	    ;;
	isp)
	    ISP="$i"
	    mode=arg
	    ;;
	port)
	    PORT="$i"
	    mode=arg
	    ;;
	hex)
	    HEX="$i"
	    mode=arg
	    ;;
    esac
done

case "$HEX" in
    default)
	case "$action" in
	    snek)
		HEX="${SNEKMEGA}"
		;;
	    usbserial)
		HEX="${USBSERIAL}"
		;;
	esac
	;;
esac

case "$action" in
    snek)
	avrdude -pATMEGA328P -carduino -P$PORT -b115200 -D -U flash:w:"${HEX}":i
	;;
    usbserial)
	avrdude -pm16u2 -c$ISP -U flash:w:"${HEX}":i
	;;
    *)
	echo "Usage: $0 {-port /dev/ttyACM0} {-isp avrisp2} {-hex snek-uno.hex} {snek|usbserial}" 1>&2
	exit 1
	;;
esac
