#!/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