From 0503248a258d64e195c8ecbf701ea36ba1e642cb Mon Sep 17 00:00:00 2001 From: FintasticMan Date: Thu, 16 Nov 2023 12:13:29 +0100 Subject: [PATCH] hook: Find correct clang-format version better --- hooks/pre-commit | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/hooks/pre-commit b/hooks/pre-commit index e03b4217..60a01e34 100755 --- a/hooks/pre-commit +++ b/hooks/pre-commit @@ -1,23 +1,29 @@ #!/bin/sh +name="clang-format" + +if [ -z "$(command -v "git-$name")" ]; then + name="$(basename -a $(find $(echo "$PATH" | tr ':' ' ') -maxdepth 1 -type f -executable -name 'git-clang-format*') | sort | tail -n 1 | sed 's/^git-//')" +fi + 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)" +for file in $(find $(echo "$PATH" | tr ':' ' ') -maxdepth 1 -type f -executable -name 'clang-format*'); do + curBin="$file" + curVersion="$("$curBin" --version | cut -d ' ' -f 3)" if [ "$(printf '%s\n' "$curVersion" "$version" "$minVersion" | sort -V | tail -n 1)" = "$curVersion" ]; then - name="$curName" + bin="$curBin" version="$curVersion" fi done -if [ -z "$name" ]; then +if [ -z "$name" ] || [ -z "$bin" ]; 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 -args='-q --extensions cpp,h --style file --staged -- :!src/FreeRTOS :!src/libs' +args="--binary $bin -q --extensions cpp,h --style file --staged -- :!src/FreeRTOS :!src/libs" changedFiles="$(git "$name" --diffstat $args)" git "$name" $args