mirror of
https://github.com/citra-emu/citra.git
synced 2024-11-26 02:10:06 +00:00
8c14d8bae5
this change adds an if statement to the pre-hook that will either dump the diff into the terminal if its less then or equal to 30 charaters or will write it to a temp file and tell the user where said file is so they can read the fixes. this helps if the user is using something like an ide. examples would include clion,possibly netbeans,and visual studio. The issue is that the prehook output doesnt get dumped into a full terminal (in the case of clion anyway) and ends up being obstructed by the ui of the ide product.
59 lines
1.9 KiB
Bash
Executable File
59 lines
1.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
if [ "$(uname)" == "Darwin" ]; then
|
|
PATH=$PATH:/usr/local/bin:/usr/local/sbin:/usr/local/opt/llvm/bin:
|
|
elif [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then
|
|
PATH=$PATH:/usr/local/bin:/usr/local/sbin:/usr/local/opt/llvm/bin:
|
|
elif [ "$(expr substr $(uname -s) 1 10)" == "MINGW32_NT" ]; then
|
|
PATH=$PATH:/usr/local/bin:/usr/local/sbin:/usr/local/opt/llvm/bin:
|
|
fi
|
|
|
|
|
|
# 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
|
|
if [ ${#d} -le 30 ]; then
|
|
echo "!!! $f not compliant to coding style, here is the fix:"
|
|
echo "$d"
|
|
else
|
|
TEMP=$(mktemp)
|
|
echo "$d" > ${TEMP}
|
|
echo "!!! $f not compliant to coding style, here is the fix: ${TEMP} please open it in your diff viewer"
|
|
fi
|
|
fail=1
|
|
fi
|
|
done
|
|
|
|
exit "${fail-0}"
|