4226d56ca9
As of clang-format 6.0.1, putting the `/* clang-format off */` hint around our "invalid" `[vertex]` and `[shader]` statements isn't enough to prevent a bogus indent of the next comments and first valid statement, so we need to enclose that first valid statement in the unformatted chunk.
40 lines
1.3 KiB
Bash
Executable file
40 lines
1.3 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
CLANG_FORMAT=clang-format-6.0
|
|
|
|
if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then
|
|
# Check the whole commit range against $TRAVIS_BRANCH, the base merge branch
|
|
# We could use $TRAVIS_COMMIT_RANGE but it doesn't play well with force pushes
|
|
RANGE="$(git rev-parse $TRAVIS_BRANCH) HEAD"
|
|
else
|
|
# Test only the last commit
|
|
RANGE=HEAD
|
|
fi
|
|
|
|
FILES=$(git diff-tree --no-commit-id --name-only -r $RANGE | grep -v thirdparty/ | grep -E "\.(c|h|cpp|hpp|cc|hh|cxx|m|mm|inc|java|glsl)$")
|
|
echo "Checking files:\n$FILES"
|
|
|
|
# create a random filename to store our generated patch
|
|
prefix="static-check-clang-format"
|
|
suffix="$(date +%s)"
|
|
patch="/tmp/$prefix-$suffix.patch"
|
|
|
|
for file in $FILES; do
|
|
"$CLANG_FORMAT" -style=file "$file" | \
|
|
diff -u "$file" - | \
|
|
sed -e "1s|--- |--- a/|" -e "2s|+++ -|+++ b/$file|" >> "$patch"
|
|
done
|
|
|
|
# if no patch has been generated all is ok, clean up the file stub and exit
|
|
if [ ! -s "$patch" ] ; then
|
|
printf "Files in this commit comply with the clang-format rules.\n"
|
|
rm -f "$patch"
|
|
exit 0
|
|
fi
|
|
|
|
# a patch has been created, notify the user and exit
|
|
printf "\n*** The following differences were found between the code to commit "
|
|
printf "and the clang-format rules:\n\n"
|
|
cat "$patch"
|
|
printf "\n*** Aborting, please fix your commit(s) with 'git commit --amend' or 'git rebase -i <hash>'\n"
|
|
exit 1
|