#!/usr/bin/env bash
#
# install-git-hooks — install repository-managed git hooks.

set -euo pipefail

ROOT_DIR="$(git rev-parse --show-toplevel 2>/dev/null || true)"
if [[ -z "${ROOT_DIR}" ]]; then
    echo "install-git-hooks: must be run inside a git repository."
    exit 1
fi

HOOKS_DIR="$(git rev-parse --git-path hooks)"
SOURCE_HOOK="${ROOT_DIR}/scripts/pre-commit"
TARGET_HOOK="${HOOKS_DIR}/pre-commit"

if [[ ! -f "${SOURCE_HOOK}" ]]; then
    echo "install-git-hooks: source hook not found at ${SOURCE_HOOK}"
    exit 1
fi

mkdir -p "${HOOKS_DIR}"
chmod +x "${SOURCE_HOOK}"

if [[ -e "${TARGET_HOOK}" && ! -L "${TARGET_HOOK}" ]]; then
    BACKUP_HOOK="${TARGET_HOOK}.local-backup"
    if [[ ! -e "${BACKUP_HOOK}" ]]; then
        mv "${TARGET_HOOK}" "${BACKUP_HOOK}"
        echo "install-git-hooks: backed up existing hook to ${BACKUP_HOOK}"
    else
        rm -f "${TARGET_HOOK}"
    fi
fi

ln -sfn "${SOURCE_HOOK}" "${TARGET_HOOK}"
chmod +x "${TARGET_HOOK}"

echo "install-git-hooks: installed pre-commit hook -> ${TARGET_HOOK}"
