split out version functions; add libtool_2_2 check
[platform/upstream/gst-common.git] / hooks / pre-commit.hook
1 #!/bin/sh
2 #
3 # Check that the code follows a consistant code style
4 #
5
6 # Check for existence of indent, and error out if not present.
7 # On some *bsd systems the binary seems to be called gnunindent,
8 # so check for that first.
9
10 version=`gnuindent --version 2>/dev/null`
11 if test "x$version" = "x"; then
12   version=`indent --version 2>/dev/null`
13   if test "x$version" = "x"; then
14     echo "GStreamer git pre-commit hook:"
15     echo "Did not find GNU indent, please install it before continuing."
16     exit 1
17   fi
18   INDENT=indent
19 else
20   INDENT=gnuindent
21 fi
22
23 case `$INDENT --version` in
24   GNU*)
25       ;;
26   default)
27       echo "GStreamer git pre-commit hook:"
28       echo "Did not find GNU indent, please install it before continuing."
29       echo "(Found $INDENT, but it doesn't seem to be GNU indent)"
30       exit 1
31       ;;
32 esac
33
34 INDENT_PARAMETERS="--braces-on-if-line \
35         --case-brace-indentation0 \
36         --case-indentation2 \
37         --braces-after-struct-decl-line \
38         --line-length80 \
39         --no-tabs \
40         --cuddle-else \
41         --dont-line-up-parentheses \
42         --continuation-indentation4 \
43         --honour-newlines \
44         --tab-size8 \
45         --indent-level2"
46
47 echo "--Checking style--"
48 for file in `git-diff-index --cached --name-only HEAD --diff-filter=ACMR| grep "\.c$"` ; do
49     # nf is the temporary checkout. This makes sure we check against the
50     # revision in the index (and not the checked out version).
51     nf=`git checkout-index --temp ${file} | cut -f 1`
52     newfile=`mktemp /tmp/${nf}.XXXXXX` || exit 1
53     $INDENT ${INDENT_PARAMETERS} \
54         $nf -o $newfile 2>> /dev/null
55     # FIXME: Call indent twice as it tends to do line-breaks
56     # different for every second call.
57     $INDENT ${INDENT_PARAMETERS} \
58         $newfile 2>> /dev/null
59     diff -u -p "${nf}" "${newfile}"
60     r=$?
61     rm "${newfile}"
62     rm "${nf}"
63     if [ $r != 0 ] ; then
64 echo "Code style error in $file, please fix before commiting."
65         exit 1
66     fi
67 done
68 echo "--Checking style pass--"