Răsfoiți Sursa

add version check to uncrustify hook

Christian Grothoff 1 an în urmă
părinte
comite
6326efdd96
1 a modificat fișierele cu 52 adăugiri și 1 ștergeri
  1. 52 1
      contrib/uncrustify_precommit

+ 52 - 1
contrib/uncrustify_precommit

@@ -1,9 +1,60 @@
-#!/bin/sh
+#!/bin/bash
 
 # use as .git/hooks/pre-commit
 
+function vercomp () {
+    if [[ $1 == $2 ]]
+    then
+        return 0
+    fi
+    local IFS=.
+    local i ver1=($1) ver2=($2)
+    # fill empty fields in ver1 with zeros
+    for ((i=${#ver1[@]}; i<${#ver2[@]}; i++))
+    do
+        ver1[i]=0
+    done
+    for ((i=0; i<${#ver1[@]}; i++))
+    do
+        if [[ -z ${ver2[i]} ]]
+        then
+            # fill empty fields in ver2 with zeros
+            ver2[i]=0
+        fi
+        if ((10#${ver1[i]} > 10#${ver2[i]}))
+        then
+            return 1
+        fi
+        if ((10#${ver1[i]} < 10#${ver2[i]}))
+        then
+            return 2
+        fi
+    done
+    return 0
+}
+
 exec 1>&2
 
+if ! uncrustify --version > /dev/null
+then
+    echo 'uncrustify required'
+    exit 1
+fi
+
+HAVE=$(uncrustify --version | sed -e 's/.*-//' -e 's/_.//')
+
+vercmp 0.78.0 "$HAVE"
+case $? in
+    0)
+    ;;
+    1)
+        echo "your uncrustify is too old";
+        exit 1
+        ;;
+    2)
+        ;;
+esac
+
 RET=0
 changed=$(git diff --cached --name-only)
 crustified=""