diff options
author | Elias Fleckenstein <eliasfleckenstein@web.de> | 2021-03-26 14:00:57 +0100 |
---|---|---|
committer | Elias Fleckenstein <eliasfleckenstein@web.de> | 2021-03-26 14:00:57 +0100 |
commit | 880c9768a9323800ca8d44cc4b73e92278e58743 (patch) | |
tree | cf5b0b340e7a02bff8e13ae364901b324114228b /util/ci/clang-format.sh | |
parent | 83d09ffaf688aac9f2de67d06420572e4d0664dc (diff) | |
parent | 437d01196899f85bbc77d71123018aa26be337da (diff) | |
download | dragonfireclient-880c9768a9323800ca8d44cc4b73e92278e58743.tar.xz |
Merge branch 'master' of https://github.com/minetest/minetest
Diffstat (limited to 'util/ci/clang-format.sh')
-rwxr-xr-x | util/ci/clang-format.sh | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/util/ci/clang-format.sh b/util/ci/clang-format.sh new file mode 100755 index 000000000..89576c656 --- /dev/null +++ b/util/ci/clang-format.sh @@ -0,0 +1,64 @@ +#! /bin/bash + +function setup_for_format() { + if [ -z "${CLANG_FORMAT}" ]; then + CLANG_FORMAT=clang-format + fi + echo "LINT: Using binary $CLANG_FORMAT" + CLANG_FORMAT_WHITELIST="util/ci/clang-format-whitelist.txt" + + files_to_lint="$(find src/ -name '*.cpp' -or -name '*.h')" +} + +function check_format() { + echo "Checking format..." + + setup_for_format + + local errorcount=0 + local fail=0 + for f in ${files_to_lint}; do + d=$(diff -u "$f" <(${CLANG_FORMAT} "$f") || true) + + if ! [ -z "$d" ]; then + whitelisted=$(awk '$1 == "'$f'" { print 1 }' "$CLANG_FORMAT_WHITELIST") + + # If file is not whitelisted, mark a failure + if [ -z "${whitelisted}" ]; then + errorcount=$((errorcount+1)) + + printf "The file %s is not compliant with the coding style" "$f" + if [ ${errorcount} -gt 50 ]; then + printf "\nToo many errors encountered previously, this diff is hidden.\n" + else + printf ":\n%s\n" "$d" + fi + + fail=1 + fi + fi + done + + if [ "$fail" = 1 ]; then + echo "LINT reports failure." + exit 1 + fi + + echo "LINT OK" +} + + + +function fix_format() { + echo "Fixing format..." + + setup_for_format + + for f in ${files_to_lint}; do + whitelisted=$(awk '$1 == "'$f'" { print 1 }' "$CLANG_FORMAT_WHITELIST") + if [ -z "${whitelisted}" ]; then + echo "$f" + $CLANG_FORMAT -i "$f" + fi + done +} |