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