#!/bin/sh

if [ $(basename "$0") != "install" ]; then
  if [ -x "$0.local" ]; then
    "$0.local" "$@" || exit $?
  fi
  if [ -x hooks/$(basename $0) ]; then
    hooks/$(basename $0) "$0" || exit $?
  fi
else
  pushd "$(git rev-parse --show-toplevel)"
  python <<\EOF
import os, os.path
TOP = os.path.realpath(".")
HOOKS = os.path.realpath(".git/hooks")
src = os.path.join(TOP, "hooks", "install")
for hook in os.listdir("hooks"):
  if hook != "install":
    tgt = HOOKS + os.sep + hook
    # there is a file there
    if os.path.isfile(tgt) and os.access(tgt, os.X_OK):
      if os.path.realpath(tgt) != src:
        print("hook " + hook + " is already installed. Moving to " + hook + ".local")
        os.rename(tgt, tgt + ".local")
    if os.path.lexists(tgt):
      os.unlink(tgt)
    os.symlink(os.path.relpath(os.path.realpath("hooks/install"), os.path.realpath(".git/hooks/")), tgt)
EOF
  popd
fi
