| #!/bin/sh | |
| # | |
| # Check that the code follows a consistant code style | |
| # | |
| # Check for existence of indent, and error out if not present. | |
| # On some *bsd systems the binary seems to be called gnunindent, | |
| # so check for that first. | |
| version=`gnuindent --version 2>/dev/null` | |
| if test "x$version" = "x"; then | |
| version=`gindent --version 2>/dev/null` | |
| if test "x$version" = "x"; then | |
| version=`indent --version 2>/dev/null` | |
| if test "x$version" = "x"; then | |
| echo "GStreamer git pre-commit hook:" | |
| echo "Did not find GNU indent, please install it before continuing." | |
| exit 1 | |
| else | |
| INDENT=indent | |
| fi | |
| else | |
| INDENT=gindent | |
| fi | |
| else | |
| INDENT=gnuindent | |
| fi | |
| case `$INDENT --version` in | |
| GNU*) | |
| ;; | |
| default) | |
| echo "GStreamer git pre-commit hook:" | |
| echo "Did not find GNU indent, please install it before continuing." | |
| echo "(Found $INDENT, but it doesn't seem to be GNU indent)" | |
| exit 1 | |
| ;; | |
| esac | |
| INDENT_PARAMETERS="--braces-on-if-line \ | |
| --case-brace-indentation0 \ | |
| --case-indentation2 \ | |
| --braces-after-struct-decl-line \ | |
| --line-length80 \ | |
| --no-tabs \ | |
| --cuddle-else \ | |
| --dont-line-up-parentheses \ | |
| --continuation-indentation4 \ | |
| --honour-newlines \ | |
| --tab-size8 \ | |
| --indent-level2 \ | |
| --leave-preprocessor-space" | |
| echo "--Checking style--" | |
| for file in `git diff-index --cached --name-only HEAD --diff-filter=ACMR| grep "\.c$"` ; do | |
| # nf is the temporary checkout. This makes sure we check against the | |
| # revision in the index (and not the checked out version). | |
| nf=`git checkout-index --temp ${file} | cut -f 1` | |
| newfile=`mktemp /tmp/${nf}.XXXXXX` || exit 1 | |
| $INDENT ${INDENT_PARAMETERS} \ | |
| $nf -o $newfile 2>> /dev/null | |
| # FIXME: Call indent twice as it tends to do line-breaks | |
| # different for every second call. | |
| $INDENT ${INDENT_PARAMETERS} \ | |
| $newfile 2>> /dev/null | |
| diff -u -p "${nf}" "${newfile}" | |
| r=$? | |
| rm "${newfile}" | |
| rm "${nf}" | |
| if [ $r != 0 ] ; then | |
| ERROR_FILES="$ERROR_FILES $file" | |
| echo "=================================================================================================" | |
| echo " Code style error in: $file " | |
| echo "=================================================================================================" | |
| echo "" | |
| fi | |
| done | |
| if [ -n "$ERROR_FILES" ];then | |
| echo "=================================================================================================" | |
| echo " Code style error in: " | |
| for file in $ERROR_FILES ; do | |
| echo " $file" | |
| done | |
| echo " " | |
| echo " Please fix before committing. Don't forget to run git add before trying to commit again. " | |
| echo " If the whole file is to be committed, this should work (run from the top-level directory): " | |
| echo " scripts/gst-indent$ERROR_FILES ; git add$ERROR_FILES ; git commit" | |
| echo " " | |
| echo "=================================================================================================" | |
| exit 1 | |
| fi | |
| csharp_files=` git diff-index --cached --name-only HEAD --diff-filter=ACMR| grep "^subprojects/gstreamer-sharp/.*cs$" ` | |
| if test "x$csharp_files" != "x"; then | |
| version=`dotnet-format --version 2>/dev/null` | |
| if test "x$version" = "x"; then | |
| echo "GStreamer git pre-commit hook:" | |
| echo "Did not find dotnet-format required to format C# files, please install it before continuing." | |
| exit 1 | |
| fi | |
| scripts/format-csharp --check | |
| r=$? | |
| if [ $r != 0 ] ; then | |
| echo "=================================================================================================" | |
| echo " Code style error: " | |
| echo " " | |
| echo " Please fix before committing, running from the top-level directory: " | |
| echo " scripts/format-chsarp " | |
| echo " " | |
| echo " Don't forget to run git add before trying to commit again. " | |
| echo "=================================================================================================" | |
| exit 1 | |
| fi | |
| fi | |
| echo "--Checking style pass--" |