# Refer for explanation to following link: # https://lefthook.dev/configuration/ # # Предкоммитные проверки — дешёвая часть гейта на **затронутых файлах**. Полный # набор здесь не гоняется намеренно: он идёт минуты, а pre-commit обязан быть # быстрым. Что ловит pre-commit и что остаётся только гейту — CLAUDE.md, # раздел «Гейт»; перечень правил и их дома — docs/autotests.md. templates: av-hooks-dir: "/home/av/projects/private/git-hooks" pre-commit: jobs: # Форматирование правится на месте и добавляется в коммит: спорить тут не о # чем, а гейт на неотформатированном файле краснеет. - name: "gofmt" glob: "*.go" run: "gofmt -w {staged_files}" stage_fixed: true # Линтеры гоняются по пакетам затронутых файлов, а не по всему дереву: # golangci-lint принимает файлы только из одного каталога, поэтому на вход # идут каталоги. - name: "golangci-lint" glob: "*.go" run: | dirs=$(printf '%s\n' {staged_files} | xargs -r -n1 dirname | sort -u) golangci-lint run $dirs - name: "shellcheck" glob: "*.sh" run: "shellcheck {staged_files}" # Подавления те же, что у шага гейта, и по тем же причинам — Taskfile.yml, # задача `dockerfile`. - name: "hadolint" glob: "Dockerfile" run: "hadolint --ignore DL3007 --ignore DL3018 {staged_files}" - name: "gitleaks" run: "gitleaks git --staged"