#!/usr/bin/env bash
set -e

# populate with an invalid default so the equals compares work downstream
ARG1=${1:-bogus}

if [ $ARG1 == "-s" ]; then
    echo "Updating to latest stabilized release"
    REVISION="releases/latest"
elif [ $ARG1 == "-b" ]; then
    echo "Updating to bleeding edge release"
    REVISION="latest-ci"
else
    echo "Usage: ${0} [-s] [-b] [[-l LOCALE]], where LOCALE is one of en, ja, zh, or en-tts"
    echo "One of -s or -b must be specified for either stabilized or bleeding edge branches"
    echo " "
    echo "This script also assumes you have initialized your root keys. If you have not,"
    echo "you will have to download and overwrite your base gateware image manually"
    echo "using the './usb_update --soc' command."
    exit 1
fi

ARG2=${2:-bogus}
if [ $ARG2 == "-l" ]; then
    if [ -z "$3" ]; then
        echo "Missing locale specifier"
        exit 0
    fi
    LOCALE="-"$3
else
    LOCALE=""
fi

./usb_update.py --disable-boot
echo "waiting for device to reconnect"
sleep 5

wget https://ci.betrusted.io/$REVISION/xous$LOCALE.img -O /tmp/xous.img
./usb_update.py -k /tmp/xous.img
rm /tmp/xous.img

echo "waiting for device to reconnect"
sleep 5

wget https://ci.betrusted.io/$REVISION/ec_fw.bin -O /tmp/ec_fw.bin
./usb_update.py -e /tmp/ec_fw.bin
rm /tmp/ec_fw.bin

echo "waiting for device to reconnect"
sleep 5

wget https://ci.betrusted.io/$REVISION/wf200_fw.bin -O /tmp/wf200_fw.bin
./usb_update.py -w /tmp/wf200_fw.bin
rm /tmp/wf200_fw.bin

echo "waiting for device to reconnect"
sleep 5

wget https://ci.betrusted.io/$REVISION/loader.bin -O /tmp/loader.bin
wget https://ci.betrusted.io/$REVISION/soc_csr.bin -O /tmp/soc_csr.bin
./usb_update.py --enable-boot-update -s /tmp/soc_csr.bin -l /tmp/loader.bin
rm /tmp/loader.bin
rm /tmp/soc_csr.bin

echo " "
echo "Please insert a paperclip into the hole in the lower right hand corner to force a full reset."
echo " "
echo "Follow the on-device instructions to finalize the update."
