InfiniTime.git

commit c634a4e3b44f0d1b020be2bbb52ac57fb4f8772d

Author: FintasticMan <finlay.neon.kid@gmail.com>

hook: Use clang-format with highest version

 hooks/pre-commit | 25 ++++++++++++++++++++++---


diff --git a/hooks/pre-commit b/hooks/pre-commit
index 9247f8a8ec2f683466961fdc6b6ee833f32fb043..e03b421770de1381507910f634649f034fe0d5a3 100755
--- a/hooks/pre-commit
+++ b/hooks/pre-commit
@@ -1,8 +1,27 @@
 #!/bin/sh
 
-changedFiles="$(git clang-format --extensions cpp,h --style file --staged -q --diffstat -- ':!src/FreeRTOS' ':!src/libs')"
-git clang-format --extensions cpp,h --style file --staged -q -- ':!src/FreeRTOS' ':!src/libs'
+minVersion="14.0.0"
+
+for file in $(find $(echo "$PATH" | tr ':' ' ') -maxdepth 1 -type f -executable -name 'git-clang-format*'); do
+  curName="$(basename "$file" | sed 's/^git-//')"
+  curVersion="$("$curName" --version | cut -d ' ' -f 3)"
+
+  if [ "$(printf '%s\n' "$curVersion" "$version" "$minVersion" | sort -V | tail -n 1)" = "$curVersion" ]; then
+    name="$curName"
+    version="$curVersion"
+  fi
+done
+
+if [ -z "$name" ]; then
+  echo "Could not find a suitable clang-format installation. Install clang-format that includes the git-clang-format script, with at least version $minVersion"
+  exit 1
+fi
 
-echo "$changedFiles" | head -n -1 | cut -d ' ' -f 1 | while read -r file; do
+args='-q --extensions cpp,h --style file --staged -- :!src/FreeRTOS :!src/libs'
+
+changedFiles="$(git "$name" --diffstat $args)"
+git "$name" $args
+
+echo "$changedFiles" | head -n -1 | cut -d ' ' -f 2 | while read -r file; do
   git add -- "$file"
 done