#!/bin/bash
set -o pipefail

SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
ROOT_DIR="$(dirname "$SCRIPT_DIR")"

if [ "`uname`" = "Darwin" ]; then
	MAC_NATIVE=1
else
	MAC_NATIVE=0
fi
if [ "`uname -o 2> /dev/null`" = "Cygwin" ]; then
	WIN_NATIVE=1
else
	WIN_NATIVE=0
fi

FAIL_CMD='echo -e \033[31;1mFAIL\033[0m'
FAILED=0

. "$ROOT_DIR/config.sh"

echo "Checking build requirements:"
echo

echo -n "Checking for perl: "
which perl || { $FAIL_CMD; FAILED=1; }

echo -n "Checking for python2.7: "
which python2.7 || { $FAIL_CMD; FAILED=1; }

echo -n "Checking for python3: "
which python3 || { $FAIL_CMD; FAILED=1; }

echo -n "Checking for curl: "
which curl || { $FAIL_CMD; FAILED=1; }

echo -n "Checking for wget: "
which wget || { $FAIL_CMD; FAILED=1; }

echo -n "Checking for zip: "
which zip || { $FAIL_CMD; FAILED=1; }

echo -n "Checking for unzip: "
which unzip || { $FAIL_CMD; FAILED=1; }

echo -n "Checking for awk: "
which awk || { $FAIL_CMD; FAILED=1; }

echo
echo "Checking packaging requirements:"
echo

if [ $WIN_NATIVE == 1 ]; then
	echo -n "Checking for 7z: "
	which 7z || { $FAIL_CMD; FAILED=1; }
	
	echo -n "Checking for upx: "
	which upx || { $FAIL_CMD; FAILED=1; }

	echo -n "Checking for uuidgen: "
	which uuidgen || { $FAIL_CMD; FAILED=1; }
	
	echo -n "Checking for signtool: "
	if [ -x "`cygpath -u \"$SIGNTOOL\"`" ]; then
		echo "`cygpath -u \"$SIGNTOOL\"`"
	else
		$FAIL_CMD
		FAILED=1
	fi
	
	echo -n "Checking for NSIS: "
	if [ -x "`cygpath -u \"$MAKENSISU\"`" ]; then
		echo "`cygpath -u \"$MAKENSISU\"`"
	else
		$FAIL_CMD
		FAILED=1
	fi
fi

if [ $MAC_NATIVE == 1 ]; then
	echo -n "Checking for codesign: "
	which /usr/bin/codesign || { $FAIL_CMD; FAILED=1; }
fi

echo
echo "Checking distribution requirements:"
echo

echo -n "Checking for Mozilla ARchive (MAR) tool: "
which mar || { $FAIL_CMD; FAILED=1; echo "  -- Install mar from https://ftp.mozilla.org/pub/firefox/nightly/latest-mozilla-central/mar-tools/"; }

echo -n "Checking for mbsdiff: "
which mbsdiff || { $FAIL_CMD; FAILED=1; echo "  -- Install mbsdiff from https://ftp.mozilla.org/pub/firefox/nightly/latest-mozilla-central/mar-tools/"; }

echo -n "Checking for rsync: "
which rsync || { $FAIL_CMD; FAILED=1; }

echo -n "Checking for sha512sum/shasum: "
which sha512sum 2>/dev/null || which shasum 2>/dev/null || { $FAIL_CMD; FAILED=1; }

echo -n "Checking for AWS CLI: "
which aws || { $FAIL_CMD; FAILED=1; }

echo -n "Checking for AWS S3 access: "
aws s3 ls $S3_BUCKET/$S3_PATH | sed 's/^[[:blank:]]*//' || { $FAIL_CMD; FAILED=1; }

echo -n "Checking for deploy host directory access: "
ssh $DEPLOY_HOST ls -d $DEPLOY_PATH || { $FAIL_CMD; FAILED=1; }


exit $FAILED
