| #!/usr/bin/env bash |
| # Distributed under the OSI-approved BSD 3-Clause License. See accompanying |
| # file Copyright.txt or https://cmake.org/licensing for details. |
| |
| die() { |
| echo 'pre-commit hook failure' 1>&2 |
| echo '-----------------------' 1>&2 |
| echo '' 1>&2 |
| echo "$@" 1>&2 |
| exit 1 |
| } |
| |
| #------------------------------------------------------------------------------- |
| line_too_long=80 |
| bad=$(regex=".{$line_too_long}" && |
| git diff-index --cached HEAD --name-only --diff-filter=AM \ |
| --pickaxe-regex -S"$regex" -- 'Source/*.h' 'Source/*.cxx' | |
| while read file; do |
| lines_too_long=$(git diff-index -p --cached HEAD \ |
| --pickaxe-regex -S"$regex" -- "$file") |
| if echo "$lines_too_long" | egrep -q '^\+'"$regex"; then |
| echo "$lines_too_long" |
| fi |
| done) |
| test -z "$bad" || |
| die 'The following changes add lines too long for our C++ style: |
| |
| '"$bad"' |
| |
| Use lines strictly less than '"$line_too_long"' characters in C++ code.' |
| |
| #----------------------------------------------------------------------------- |
| |
| # Check that development setup is up-to-date. |
| lastSetupForDevelopment=$(git config --get hooks.SetupForDevelopment || echo 0) |
| eval $(grep '^SetupForDevelopment_VERSION=' "${BASH_SOURCE%/*}/../SetupForDevelopment.sh") |
| test -n "$SetupForDevelopment_VERSION" || SetupForDevelopment_VERSION=0 |
| if test $lastSetupForDevelopment -lt $SetupForDevelopment_VERSION; then |
| die 'Developer setup in this work tree is out of date. Please re-run |
| |
| Utilities/SetupForDevelopment.sh |
| ' |
| fi |
| |
| #------------------------------------------------------------------------------- |
| if test -z "$HOOKS_ALLOW_KWSYS"; then |
| # Disallow changes to KWSys |
| files=$(git diff-index --name-only --cached HEAD -- Source/kwsys) && |
| if test -n "$files"; then |
| die 'Changes to KWSys files |
| |
| '"$(echo "$files" | sed 's/^/ /')"' |
| |
| should not be made directly in CMake. KWSys is kept in its own Git |
| repository and shared by several projects. Please visit |
| |
| https://gitlab.kitware.com/utils/kwsys |
| |
| to contribute changes directly to KWSys. Run |
| |
| git reset HEAD -- Source/kwsys |
| |
| to unstage these changes. Alternatively, set environment variable |
| |
| HOOKS_ALLOW_KWSYS=1 |
| |
| to disable this check and commit the changes locally.' |
| fi |
| fi |