#!/bin/sh
set -u
: ${PGAUTOINDENT:=yes}

# the files in the commit
if git diff --cached --name-only --diff-filter=ACMR | grep src/tools/pgindent/typedefs.list > /dev/null; then
    # if typedefs.list is changed, we need to re-run pgindent on all files
    files='src contrib'
else
    files=$(git diff --cached --name-only --diff-filter=ACMR)
fi

check_indent () {
  # no need to filter files - pgindent ignores everything that isn't a
  # .c or .h file

  if [ "$PGAUTOINDENT" = yes ] ; then
    if ! src/tools/pgindent/pgindent --check --write $files; then
      echo "Commit abandoned. Rerun git add+commit to adopt pgindent changes"
      exit 1
    fi
  elif ! src/tools/pgindent/pgindent --check $files; then
    echo 'You need a pgindent run, e.g:'
    echo -n 'src/tools/pgindent/pgindent '
    if [ $files = 'src contrib' ]; then
        echo $files
    else
        echo '$(git diff --name-only --diff-filter=ACMR)'
    fi
  fi
  
}

# nothing to do if there are no files
test -z "$files" && exit 0
check_indent
