#!/usr/bin/env bash
set -o nounset -o errexit
CIDIR="$(dirname "$0")"
ORIGNAME="$(git symbolic-ref -q --short HEAD || git describe --all --always HEAD)"
FAILURE_DETECTED="?"

function checkout_back {
	git checkout --force "${ORIGNAME}" || { echo "Warning: unable to checkout back!"; exit 5; }

	test "${FAILURE_DETECTED}" "==" "0" && echo "All tests passed, good work!"
	test "${FAILURE_DETECTED}" "!=" "0" && echo "Problem found, go fix it!"
}

STATUS=$(git status --untracked-files=normal --porcelain)
test -n "${STATUS}" && echo "Working tree is dirty, commit your changes now." && exit 2

# return back to whatever branch we were on the beginning
# to avoid need for git checkout before fixing reported bugs
trap checkout_back EXIT
trap "{ FAILURE_DETECTED=1; }" ERR

"${CIDIR}"/compare-rplint.sh
checkout_back
git clean -xdf

"${CIDIR}"/compare-pylint.sh
checkout_back
git clean -xdf

"${CIDIR}"/compare-pep8.sh
checkout_back
git clean -xdf

"${CIDIR}"/compare-tests.sh "${CIDIR}/../kresd_run.sh"
checkout_back
git clean -xdf

# at this point all the tests passed so we can clean up
git clean -xdf
FAILURE_DETECTED=0
trap - ERR
