#!/bin/bash # install-hooks.sh — Instala os git hooks OKF no Hub vault # Uso: bash scripts/install-hooks.sh [--uninstall] # # Criado: 28-06-2026 VAULT="/media/ealmeida/Dados/Hub" SCRIPTS_DIR="$(cd "$(dirname "$0")" && pwd)" GIT_DIR=$(git -C "$VAULT" rev-parse --git-dir 2>/dev/null) if [[ -z "$GIT_DIR" ]]; then echo "ERRO: $VAULT não é um repositório git" exit 1 fi # Resolver path absoluto do .git if [[ "$GIT_DIR" == ".git" ]]; then GIT_ABSOLUTE="$VAULT/.git" else GIT_ABSOLUTE="$GIT_DIR" fi HOOKS_DIR="$GIT_ABSOLUTE/hooks" HOOK_FILE="$HOOKS_DIR/pre-commit" HOOK_SOURCE="$SCRIPTS_DIR/okf-validate.sh" # ─── Desinstalar ────────────────────────────────────────────────────────────── if [[ "${1:-}" == "--uninstall" ]]; then if [[ -L "$HOOK_FILE" ]]; then rm "$HOOK_FILE" echo "[OK] Hook removido: $HOOK_FILE" elif [[ -f "$HOOK_FILE" ]]; then echo "[AVISO] $HOOK_FILE não é um symlink — remover manualmente se necessário" else echo "[INFO] Nenhum hook instalado" fi exit 0 fi # ─── Instalar ───────────────────────────────────────────────────────────────── echo "=== Instalar OKF pre-commit hook ===" echo "Vault: $VAULT" echo "Git dir: $GIT_ABSOLUTE" echo "Hook: $HOOK_FILE" echo "Source: $HOOK_SOURCE" echo "" # Verificar que o script de validação existe if [[ ! -f "$HOOK_SOURCE" ]]; then echo "ERRO: Script não encontrado — $HOOK_SOURCE" exit 1 fi # Tornar executável chmod +x "$HOOK_SOURCE" # Criar diretório hooks se não existir mkdir -p "$HOOKS_DIR" # Backup do hook existente (se não for nosso symlink) if [[ -f "$HOOK_FILE" ]] && [[ ! -L "$HOOK_FILE" ]]; then BACKUP="$HOOK_FILE.backup.$(date +%Y%m%d)" mv "$HOOK_FILE" "$BACKUP" echo "[INFO] Hook existente guardado em: $BACKUP" fi # Remover symlink antigo se existir [[ -L "$HOOK_FILE" ]] && rm "$HOOK_FILE" # Criar symlink ln -s "$HOOK_SOURCE" "$HOOK_FILE" chmod +x "$HOOK_FILE" echo "[OK] Hook instalado: $HOOK_FILE → $HOOK_SOURCE" echo "" echo "Testar: git -C $VAULT commit --dry-run -m 'test'" echo "Validar tudo: bash $HOOK_SOURCE --all" echo "Desinstalar: bash $SCRIPTS_DIR/install-hooks.sh --uninstall"