#!/bin/sh -e

TARG=../release

if [ ! -d ../firmware ] ; then
	echo Running from wrong directory.
	exit 1
fi

cd ../firmware

if [ -d $TARG ] ; then
	echo Release dir already exists
	echo please remove/move away
	exit 1
fi

if [ ! -f SECRETS.release ] ; then
	echo Please create a SECRETS.release file
	echo containing the release keys.
    echo
    echo 'Do not commit them!'
	exit 1
fi

cp SECRETS.release SECRETS

mkdir $TARG
mkdir $TARG/files

echo "###"
echo "### Building initial"
echo "###"

git checkout filesystem/ffconf.h
make clean
make APP=initial
cp firmware.bin $TARG/initial.bin

echo "###"
echo "### Building final"
echo "###"
export FINAL=y
cp filesystem/ffconf.h-final filesystem/ffconf.h
make clean 
./l0dable/mktable.pl
make APP=final
cp firmware.elf $TARG/final.elf
cp firmware.bin $TARG/final.bin

echo "###"
echo "### Building crypto"
echo "###"
(cd ../tools/crypto && make)

echo "###"
echo "### Gathering files"
echo "###"
cp ../tools/font/binary/*.f0n $TARG/files/
cp ../tools/image/lcd/*.lcd $TARG/files/
cp ../tools/image/lcd/i42.lcd $TARG/files/nick.lcd

echo "###"
echo "### Gathering loadables"
echo "###"
# XXX: add crypto stuff
(cd l0dable && make)
mv l0dable/*.c0d $TARG/files/
mv l0dable/*.int $TARG/files/
mv l0dable/*.nik $TARG/files/

if grep -q 'define ENCRYPT_L0DABLE' SECRETS ; then

echo "###"
echo "### Crypting loadables"
echo "###"

skey=`./getkey.pl l0dable_sign`
ekey=`./getkey.pl l0dable_crypt`

if [ -z "$ekey" ] ; then 
    echo E-Key fail
    exit 1
fi

if [ -z "$skey" ] ; then 
    echo S-Key fail
    exit 1
fi

for a in $TARG/files/*.c0d $TARG/files/*.int $TARG/files/*.nik ; do
    echo Crypting $a
    ../tools/crypto/xxtea -e -k $ekey $a
    ../tools/crypto/xxtea -s -k $skey $a
done

fi

echo "###"
echo "### Done. Yay!"
echo "###"

git checkout SECRETS
git checkout filesystem/ffconf.h
