| #!/usr/bin/env bash |
| #============================================================================= |
| # CMake - Cross Platform Makefile Generator |
| # Copyright 2000-2011 Kitware, Inc., Insight Software Consortium |
| # |
| # Distributed under the OSI-approved BSD License (the "License"); |
| # see accompanying file Copyright.txt for details. |
| # |
| # This software is distributed WITHOUT ANY WARRANTY; without even the |
| # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
| # See the License for more information. |
| #============================================================================= |
| |
| 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.' |
| |
| #------------------------------------------------------------------------------- |
| 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 |
| |
| http://public.kitware.com/Wiki/KWSys/Git |
| |
| 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 |