feat(okf-hub): relocar tooling OKF do Hub para Dev/Scripts (regra: scripts fora do vault)

This commit is contained in:
2026-06-28 20:46:17 +01:00
parent e11b237a1e
commit e810bbb114
8 changed files with 1143 additions and 0 deletions
+80
View File
@@ -0,0 +1,80 @@
#!/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"