fail_fast: true

repos:
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v6.0.0
    hooks:
      - id: check-ast # checks Python syntax
      - id: check-json # checks JSON syntax
      - id: check-merge-conflict # checks for no merge conflict strings
      - id: check-shebang-scripts-are-executable # checks all shell scripts have executable permissions
      - id: check-toml # checks TOML syntax
      - id: check-yaml # checks YAML syntax
      - id: end-of-file-fixer # checks there is a newline at the end of the file
      - id: mixed-line-ending # normalizes line endings
      - id: no-commit-to-branch # prevents committing to main
      - id: trailing-whitespace # trims trailing whitespace
        args: [--markdown-linebreak-ext=md, --markdown-linebreak-ext=mdx]

  - repo: https://github.com/astral-sh/ruff-pre-commit
    rev: v0.14.0
    hooks:
    - id: ruff-check
      args: [ --fix ]
    - id: ruff-format

  - repo: https://github.com/codespell-project/codespell
    rev: v2.4.1
    hooks:
      - id: codespell
        exclude: "haystack/data/abbreviations"
        args: ["--toml", "pyproject.toml"]
        additional_dependencies:
          - tomli

  - repo: https://github.com/rhysd/actionlint
    rev: v1.7.10
    hooks:
      - id: actionlint-docker
        args: ["-ignore", "SC2102"]
