Files
transcriber/lefthook.yml
T
av d8d6bcc193 docs: линтеры и механизация переехали записью конвенций go-linters.md
- документ docs/autotests.md снят: перечень правил, подавлений и лестница
  механизации — это конвенция о том, чем машина читает код, и место ей среди
  прочих записей
- в шапке названо, чего в записи нет: как писать тесты. Свойства, которые обязан
  проверять тест, остаются в review.md, «Типовые узлы»
- ссылки переставлены в памятке, индексе конвенций, четырёх записях, review.md,
  .golangci.yml, lefthook.yml и пакете сканеров
2026-08-13 09:11:49 +03:00

42 lines
1.8 KiB
YAML

# Refer for explanation to following link:
# https://lefthook.dev/configuration/
#
# Предкоммитные проверки — дешёвая часть гейта на **затронутых файлах**. Полный
# набор здесь не гоняется намеренно: он идёт минуты, а pre-commit обязан быть
# быстрым. Что ловит pre-commit и что остаётся только гейту — CLAUDE.md,
# раздел «Гейт»; перечень правил и их дома — docs/conventions/go-linters.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"