#!/bin/sh # Enforce citra's whitespace policy git config --local core.whitespace tab-in-indent,trailing-space paths_to_check="src/ CMakeLists.txt" # If there are whitespace errors, print the offending file names and fail. if ! git diff --cached --check -- $paths_to_check ; then cat<<END Error: This commit would contain trailing spaces or tabs, which is against this repo's policy. Please correct those issues before committing. (Use 'git diff --check' for more details) If you know what you are doing, you can try 'git commit --no-verify' to bypass the check END exit 1 fi # Check for tabs, since tab-in-indent catches only those at the beginning of a line if git diff --cached -- $paths_to_check | egrep '^\+.* '; then cat<<END Error: This commit would contain a tab, which is against this repo's policy. If you know what you are doing, you can try 'git commit --no-verify' to bypass the check. END exit 1 fi for f in $(git diff --name-only --diff-filter=ACMRTUXB --cached); do if ! echo "$f" | egrep -q "[.](cpp|h)$"; then continue fi if ! echo "$f" | egrep -q "^src/"; then continue fi d=$(clang-format "$f" | diff -u "$f" -) if ! [ -z "$d" ]; then echo "!!! $f not compliant to coding style, here is the fix:" echo "$d" fail=1 fi done exit "${fail-0}"