#!/bin/sh

PYTHON=${PYTHON:-$(which python3 python | head -n 1)}

# Usage info
show_help() {
	cat <<EOF
Usage: $(basename $0) [-h] [-p ESPTOOL_PORT] [-P PYTHON] [-f FILENAME|FILENAME]
Flash image file to device, leave existing system intact."

    -h               Display this help and exit
    -p ESPTOOL_PORT  Set the environment variable for ESPTOOL_PORT.  If not set, ESPTOOL iterates all ports (Dangerrous).
    -P PYTHON        Specify alternate python interpreter to use to invoke esptool. (Default: "$PYTHON")
    -f FILENAME      The *update.bin file to flash.  Custom to your device type.
    
EOF
}

while getopts ":hp:P:f:" opt; do
	case "${opt}" in
	h)
		show_help
		exit 0
		;;
	p)
		export ESPTOOL_PORT=${OPTARG}
		;;
	P)
		PYTHON=${OPTARG}
		;;
	f)
		FILENAME=${OPTARG}
		;;
	*)
		echo "Invalid flag."
		show_help >&2
		exit 1
		;;
	esac
done
shift "$((OPTIND - 1))"

[ -z "$FILENAME" -a -n "$1" ] && {
	FILENAME=$1
	shift
}

if [ -f "${FILENAME}" ] && [ -z "${FILENAME##*"update"*}" ]; then
	printf "Trying to flash update ${FILENAME}"
	$PYTHON -m esptool --baud 115200 write_flash 0x10000 ${FILENAME}
else
	show_help
	echo "Invalid file: ${FILENAME}"
fi

exit 0