fail_fast: false
default_install_hook_types: [pre-commit, commit-msg]
repos:
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v4.4.0
    hooks:
      - id: check-merge-conflict
      - id: check-yaml
      - id: end-of-file-fixer
      - id: fix-byte-order-marker
      - id: mixed-line-ending
      - id: trailing-whitespace
  - repo: local
    hooks:
      - id: conventional-commit-msg-validation
        name: commit message conventional validation
        language: pygrep
        entry: '^(?:fixup! )?(breaking|build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test){1}(\([\w\-\.]+\))?(!)?: ([\w `])+([\s\S]*)'
        args: [--multiline, --negate]
        stages: [commit-msg]
      - id: commit-msg-needs-to-be-signed-off
        name: commit message needs to be signed off
        language: pygrep
        entry: "^Signed-off-by:"
        args: [--multiline, --negate]
        stages: [commit-msg]
      - id: gofmt
        name: gofmt
        description: Format files with gofmt.
        entry: gofmt -l
        language: golang
        files: \.go$
        args: []
  - repo: https://github.com/gitleaks/gitleaks
    rev: v8.16.3
    hooks:
      - id: gitleaks
  - repo: https://github.com/golangci/golangci-lint
    rev: v1.52.2
    hooks:
      - id: golangci-lint
