#!/bin/sh

echo "Doing clang-tidy..."
bool=false
# explicitly set IFS to contain only a line feed
IFS='
'
filelist="$(find . -not \( -path './*build*' -prune \) -not \( -path './include' -prune \) -type f ! -name "$(printf "*\n*")")"
for file in $filelist; do
  if echo "$file" | grep -q -E ".*(\.cpp|\.hpp)$" ; then
    #Extra check missing dependencies due to clang-tidy doesn't toggle exit code.
    clang_tidy_lib_check="$(clang-tidy -warnings-as-errors='*' -header-filter='.*,-cpptoml.hpp' "$file" -- -I. -std=c++14 2>&1)"
    for tidy_line in $clang_tidy_lib_check; do
      echo "$tidy_line" | grep -q -v -E "^Error while processing*"
      if [ $? -eq 1 ]; then
	bool=true
      fi
      echo "$tidy_line" | grep -q -v -E ".* error: .*"
      if [ $? -eq 1 ]; then
	bool=true
      fi
      echo "$tidy_line"
    done
  fi
done
if $bool; then
  exit 1
else
  echo "No clang-tidy errors found."
fi

exit 0
