# See https://pre-commit.com for more information
# See https://pre-commit.com/hooks.html for more hooks
repos:
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: 3e8a8703264a2f4a69428a0aa4dcb512790b2c8c # v6.0.0
    hooks:
      - id: check-added-large-files
      - id: check-toml
      - id: check-yaml
        args:
          - --unsafe
      - id: end-of-file-fixer
        exclude: |
            (?x)^(
                frontend/src/client/.*|
                backend/app/email-templates/.*
            )$
      - id: trailing-whitespace
        exclude: ^frontend/src/client/.*
  - repo: https://github.com/crate-ci/typos
    rev: 00f422f3b19c57bc6338715ebfe3316d38768461 # frozen: v1.50.3
    hooks:
      - id: typos
        args: [--force-exclude]
  - repo: local
    hooks:
      - id: local-biome-check
        name: biome check
        entry: npm run lint
        language: system
        types: [text]
        files: ^frontend/

      - id: local-ruff-check
        name: ruff check
        entry: uv run ruff check --force-exclude --fix --exit-non-zero-on-fix
        require_serial: true
        language: unsupported
        types: [python]

      - id: local-ruff-format
        name: ruff format
        entry: uv run ruff format --force-exclude --exit-non-zero-on-format
        require_serial: true
        language: unsupported
        types: [python]

      - id: local-mypy
        name: mypy check
        entry: uv run mypy backend/app
        require_serial: true
        language: unsupported
        pass_filenames: false

      - id: local-ty
        name: ty check
        entry: uv run ty check backend/app
        require_serial: true
        language: unsupported
        pass_filenames: false

      - id: generate-frontend-sdk
        name: Generate Frontend SDK
        entry: bash ./scripts/generate-client.sh
        pass_filenames: false
        language: unsupported
        files: ^backend/app/.*\.py$|^backend/pyproject\.toml$|^uv\.lock$|^frontend/openapi-ts\.config\.ts$|^scripts/generate-client\.sh$

      - id: add-release-date
        language: unsupported
        name: add date to latest release header
        entry: uv run python scripts/add_latest_release_date.py
        files: ^release-notes\.md$
        pass_filenames: false

      - id: zizmor
        name: zizmor
        language: python
        entry: uv run zizmor .
        files: ^\.github\/workflows\/
        require_serial: true
        pass_filenames: false