---
# 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: v4.4.0
    hooks:
      - id: check-added-large-files
      - id: check-case-conflict
      - id: check-executables-have-shebangs
      - id: check-shebang-scripts-are-executable
      - id: check-symlinks
      - id: destroyed-symlinks

      - id: check-json
      - id: check-yaml
      - id: check-xml
      - id: check-toml

      - id: check-vcs-permalinks
      - id: check-merge-conflict
      - id: end-of-file-fixer
        exclude: ^(docs/locales/.*/LC_MESSAGES)
      - id: mixed-line-ending
      - id: trailing-whitespace

  - repo: https://github.com/python-poetry/poetry
    rev: 1.5.1
    hooks:
      - id: poetry-check
        files: ^api/pyproject.toml$
        args: [--directory=api]

      - id: poetry-lock
        files: ^api/pyproject.toml$
        args: [--directory=api, --check]

  - repo: https://github.com/asottile/pyupgrade
    rev: v3.6.0
    hooks:
      - id: pyupgrade
        args: [--py38-plus]
        exclude: ^(api/.*/migrations/.*)

  - repo: https://github.com/psf/black
    rev: 23.3.0
    hooks:
      - id: black

  - repo: https://github.com/pycqa/isort
    rev: 5.12.0
    hooks:
      - id: isort

  - repo: https://github.com/pycqa/flake8
    rev: 6.0.0
    hooks:
      - id: flake8

  - repo: https://github.com/pre-commit/mirrors-prettier
    rev: v2.7.1
    hooks:
      - id: prettier
        files: \.(md|yml|yaml|json)$

  - repo: https://github.com/codespell-project/codespell
    rev: v2.2.5
    hooks:
      - id: codespell
        additional_dependencies: [tomli]

  - repo: https://github.com/shellcheck-py/shellcheck-py
    rev: v0.9.0.5
    hooks:
      - id: shellcheck

  - repo: local
    hooks:
      - id: pwa-manifest.json
        name: pwa-manifest.json
        description: Sync pwa-manifest.json
        entry: scripts/sync-pwa-manifest.sh
        pass_filenames: false
        language: script
        files: pwa-manifest.json$
