#!/bin/bash

STYLE=$(git config --get hooks.clangformat.style)
if [ -n "${STYLE}" ] ; then
  STYLEARG="-style=${STYLE}"
else
  STYLEARG=""
fi

format_file() {
  file="${1}"
  if [ -f "$file" ]; then
    echo "Formatting $file"
    clang-format -i "${STYLEARG}" "${1}"
    git add "${1}"
  fi
}

case "${1}" in
  --about )
    echo "Runs clang-format on source files"
    ;;
  * )
    for file in $(git diff-index --cached --name-only HEAD | grep -iE '/src/.*\.(c|cc|cpp|h|hpp)$') ; do
      format_file "${file}"
    done
    ;;
esac
