#!/bin/sh -e

# To use this script as a Git hook:
#
#   cd .git/hooks # from repo root
#   ln -s ../../tools/pre-push .

if ! git diff HEAD --quiet; then
    if git diff --cached --quiet; then
        echo 'Local changes exist and none is staged; stashing.'
        git stash
        trap 'r=$?; git stash pop; trap - EXIT; exit $r' EXIT INT HUP TERM
    else
        echo 'Local changes exist and some are staged; not stashing.'
        echo 'Make a commit, stash all the changes, or unstage all the changes.'
        exit 1
	fi
fi

make test checkstyle lint codespell
make -C website check-rellinks
# A quick cross compilation test. Not exhaustive, but will catch most issues.
if test `go env GOOS` = windows; then
    GOOS=linux GOARCH=amd64 go build ./...
else
    GOOS=windows GOARCH=amd64 go build ./...
fi
