mirror of
https://github.com/citra-emu/citra.git
synced 2024-11-26 02:20:06 +00:00
97b403ebe7
Users who do not have clang-format installed were not able to push commits. This patch gives better feedback to the developer by explicitely telling the user to install the package.
51 lines
1.5 KiB
Bash
Executable File
51 lines
1.5 KiB
Bash
Executable File
#!/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
|
|
|
|
if ! hash "clang-format" 2> /dev/null; then
|
|
cat<<END
|
|
Error: You must have clang-format installed on your system for codestyle checking purposes.
|
|
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}"
|