feat(okf-hub): relocar tooling OKF do Hub para Dev/Scripts (regra: scripts fora do vault)
This commit is contained in:
Executable
+80
@@ -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"
|
||||
Reference in New Issue
Block a user