repos:
  # lint yaml, line and whitespace
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v4.5.0
    hooks:
      - id: check-yaml
      - id: end-of-file-fixer
      - id: trailing-whitespace
      - id: requirements-txt-fixer
      - id: mixed-line-ending
      - id: check-executables-have-shebangs
      - id: check-shebang-scripts-are-executable

  # lint the dockerfiles
  - repo: https://github.com/hadolint/hadolint
    rev: v2.12.1-beta
    hooks:
      - id: hadolint

  # prettier
  - repo: https://github.com/pre-commit/mirrors-prettier
    rev: "v3.0.3" # Use the sha / tag you want to point at
    hooks:
      - id: prettier
        types_or: [file, bash, sh, javascript, jsx, ts, tsx]
        additional_dependencies:
          - prettier@2.5.1
        exclude: ^(Dockerfile*)

  - repo: https://github.com/codespell-project/codespell.git
    rev: "v2.2.6" # Use the sha / tag you want to point at
    hooks:
      - id: codespell
        types: [text]
        args: [--ignore-words=.dictionary.txt]
        exclude: ^(Dockerfile*)

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

  - repo: https://github.com/sirosen/check-jsonschema
    rev: 0.27.0
    hooks:
      - id: check-github-actions
      - id: check-github-workflows

  - repo: https://github.com/doublify/pre-commit-rust
    rev: v1.0
    hooks:
      - id: fmt
      - id: cargo-check

    # lint python formatting
  - repo: https://github.com/psf/black
    rev: 23.10.0
    hooks:
      - id: black

  - repo: https://github.com/pycqa/flake8
    rev: "6.1.0" # pick a git hash / tag to point to
    hooks:
      - id: flake8
        args: ["--extend-ignore=W503,W504,E501"]