#!/bin/bash

set -eu

# Ignore mod file changes; README.md and po files
# Modules are handled in another check and aren't related to generator
# po and README.md files will be automatically updated once master in master.
git update-index --assume-unchanged go.* po/* README.md
on_exit() {
    # Restore files
    git update-index --no-assume-unchanged go.* po/* README.md
}
trap on_exit EXIT INT QUIT ABRT PIPE TERM

go generate ./...

# Handle everything but po and assets files
modified_files=`git status --porcelain --untracked-files=no`

# Check generated files
MODIFIED=""
if [ -n "$modified_files" ]; then
    # Ignore assets modification time and protoc version.
    MODIFIED=`git difftool -y -x "diff -I 'modTime' -I '^//.*protoc.*v'"`
fi

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