
function goodbye () {
	local DURATION=$(date --date=@$(( "$(date +%s)" - "$TRAP_START_TIME" )) --utc +%T)
	local CODE=$1
	cd "$TRAP_DIR"
	if [ "$CODE" == 0 ]; then
		m "$(realpath --relative-to="$ROOT" "$0") succeeded! $DURATION" "$GREEN"
	elif [ "$CODE" == abort ]; then
		m "Aborted $(realpath --relative-to="$ROOT" "$0")! $DURATION" "$RED"
	else
		m "Oh no! $(realpath --relative-to="$ROOT" "$0") failed! $DURATION" "$RED"
	fi
}

function trap_EXIT () {
	local ERR=$?
	goodbye "$ERR"
	exit "$ERR"
}

function trap_INT () {
	goodbye abort
	trap - EXIT
	exit 1
}

TRAP_DIR=$PWD
TRAP_START_TIME=$(date +%s)

trap trap_INT INT

trap trap_EXIT EXIT
