#!/bin/bash

set -eu

# Ignore mod file changes
git update-index --assume-unchanged go.*
on_exit() {
    # Restore go mod files
    git update-index --no-assume-unchanged go.*
}
trap on_exit EXIT INT QUIT ABRT PIPE TERM

go generate ./...
MODIFIED=`git status --porcelain --untracked-files=no`

if [ -n "$MODIFIED" ]; then
    echo "ERROR: `go generate` modified files:"
    git --no-pager diff
    exit 1
fi