repos:
  - repo: local
    hooks:
      - id: check-translation-tag
        name: Check newline characters in <translation> tag
        entry: .github/workflows/helper/pre-commit/check_translation_tag.py
        language: script
        exclude: |
          (?x)^(
            src/lang/.*
          )$
        types_or:
          - ts

  - repo: https://github.com/pre-commit/pre-commit-hooks.git
    rev: v4.4.0
    hooks:
    - id: check-json
      name: Check JSON files

    - id: check-yaml
      name: Check YAML files

    - id: fix-byte-order-marker
      name: Check file encoding (UTF-8 without BOM)
      exclude: |
        (?x)^(
          src/base/unicodestrings.h
        )$

    - id: mixed-line-ending
      name: Check line ending character (LF)
      args: ["--fix=lf"]
      exclude: |
        (?x)^(
          src/webui/www/private/css/lib/.* |
          src/webui/www/private/scripts/lib/.* |
          test/testdata/crlf.txt
        )$

    - id: end-of-file-fixer
      name: Check trailing newlines
      exclude: |
        (?x)^(
          configure |
          src/webui/www/private/css/lib/.* |
          src/webui/www/private/scripts/lib/.* |
          test/testdata/crlf.txt
        )$
      exclude_types:
        - svg
        - ts

    - id: trailing-whitespace
      name: Check trailing whitespaces
      exclude: |
        (?x)^(
          src/webui/www/private/css/lib/.* |
          src/webui/www/private/scripts/lib/.*
        )$
      exclude_types:
        - ts

  - repo: https://github.com/codespell-project/codespell
    rev: v2.2.5
    hooks:
    - id: codespell
      name: Check spelling (codespell)
      args: ["--ignore-words-list", "additionals,curren,fo,ket,superseeding,te,ths"]
      exclude: |
        (?x)^(
          .*\.desktop |
          .*\.qrc |
          build-aux/.* |
          Changelog |
          dist/windows/installer-translations/.* |
          m4/.* |
          src/base/3rdparty/.* |
          src/searchengine/nova3/socks.py |
          src/webui/www/private/scripts/lib/.*
        )$
      exclude_types:
        - ts

  - repo: https://github.com/crate-ci/typos
    rev: v1.15.5
    hooks:
    - id: typos
      name: Check spelling (typos)
      args: ["--config", ".github/workflows/helper/pre-commit/.typos.toml"]
      exclude: |
        (?x)^(
          .*\.asc |
          .*\.desktop |
          .*\.qrc |
          \.pre-commit-config\.yaml |
          build-aux/.* |
          Changelog |
          configure.* |
          dist/windows/installer-translations/.* |
          m4/.* |
          src/base/3rdparty/.* |
          src/searchengine/nova3/socks.py |
          src/webui/www/private/scripts/lib/.*
        )$
      exclude_types:
        - svg
        - ts
