Execute as verificações de conformidade com ADRs do Archgate antes de cada commit com hooks nativos do git ou um gerenciador de hooks. Pegue violações de arquitetura antes que cheguem ao CI.
Um pre-commit hook executa archgate check --staged antes de cada commit, de modo que as violações de arquitetura são pegas na máquina do desenvolvedor — antes que cheguem a um pull request. Como --staged verifica apenas os arquivos na área de staging do git, o hook se mantém rápido o suficiente para o uso diário.
Este guia mostra a abordagem com hook nativo do git, além dos dois gerenciadores de hooks comuns. Para a referência completa de flags, veja o guia de pre-commit da CLI em cli.archgate.dev.
Por que --staged
Seção intitulada “Por que --staged”archgate check --staged restringe a avaliação aos arquivos em staging no git:
- Um projeto com centenas de arquivos-fonte, mas três arquivos em staging, verifica apenas esses três.
- Regras cujos globs
filesnão casam com nada na área de staging são totalmente ignoradas. - Verificações típicas de pre-commit terminam em menos de um segundo.
Quando uma regra falha, o comando sai com código 1 e o commit é bloqueado. As violações são impressas no stderr com o ID do ADR, o nome da regra, o caminho do arquivo e o número da linha, para que você possa localizá-las e corrigi-las imediatamente. Refaça o stage com git add e commite novamente.
Hook nativo do git
Seção intitulada “Hook nativo do git”Nenhuma ferramenta extra é necessária — o git procura por um executável em .git/hooks/pre-commit:
Crie o hook e torne-o executável:
cat > .git/hooks/pre-commit <<'EOF'#!/bin/sharchgate check --stagedEOFchmod +x .git/hooks/pre-commitO Git para Windows executa hooks através do shell que vem junto, então um script POSIX sh funciona. Crie o arquivo com um shebang e sem a extensão .ps1:
@'#!/bin/sharchgate check --staged'@ | Set-Content -NoNewline .git/hooks/pre-commitGerenciadores de hooks
Seção intitulada “Gerenciadores de hooks”Gerenciadores de hooks armazenam a configuração do hook em um arquivo versionado, de modo que cada clone do repositório recebe os mesmos hooks. Ambos os gerenciadores abaixo executam archgate check --staged exatamente como o hook nativo faz.
O Lefthook é um gerenciador de git hooks rápido e multiplataforma. Adicione a verificação ao lefthook.yml:
pre-commit: commands: adr-check: run: archgate check --stagedEntão instale os hooks:
lefthook installO Husky é uma ferramenta popular de git hooks para projetos Node.js. Adicione a verificação ao hook de pre-commit:
archgate check --stagedGaranta que o hook seja executável:
chmod +x .husky/pre-commitRodando ao lado de outros hooks
Seção intitulada “Rodando ao lado de outros hooks”Pre-commit hooks normalmente executam várias verificações. Cada comando roda de forma independente, e o commit é bloqueado se qualquer um sair com código diferente de zero. Com o Lefthook:
pre-commit: commands: lint: run: npm run lint typecheck: run: npm run typecheck adr-check: run: archgate check --stagedFlags úteis
Seção intitulada “Flags úteis”O comando check aceita as mesmas flags aqui que em qualquer outro lugar; estas são as relevantes para hooks. A lista completa está na referência da CLI.
| Flag | Propósito |
|---|---|
--staged | Verifica apenas arquivos em staging no git — obrigatória para pre-commit |
--verbose | Mostra regras que passaram e timing — útil ao depurar por que um hook está lento |
--adr <id> | Verifica regras de um único ADR — útil para isolar uma regra durante a depuração |
--json | Emite JSON — para encaminhar a scripts de relatório personalizados |