---
# 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.3.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-merge-conflict
      - id: end-of-file-fixer
        exclude: \.json$
      - id: mixed-line-ending
        args: [--fix=lf]
      - id: trailing-whitespace
        exclude: \.ambr$

      - id: name-tests-test
        # TODO: Remove once the django api uses pytest
        exclude: ^(api.*)$

  - repo: https://github.com/pre-commit/mirrors-prettier
    rev: v2.7.1
    hooks:
      - id: prettier
        files: \.(md|mdx|yml|yaml|js|jsx|ts|tsx|json|css)$
        exclude: ^legacy/public(?!/js/airtime)

  - repo: https://github.com/asottile/pyupgrade
    rev: v3.0.0
    hooks:
      - id: pyupgrade
        args: [--py36-plus]

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

  # - repo: https://github.com/pycqa/isort
  #   rev: 5.9.3
  #   hooks:
  #     - id: isort
  #       args: ["--profile", "black", "--filter-files"]

  - repo: https://github.com/codespell-project/codespell
    rev: v2.2.1
    hooks:
      - id: codespell
        args:
          - --ignore-words=.codespellignore
          - --builtin=clear,rare,informal
        exclude: (^api/schema.yml|^legacy.*|yarn\.lock)$

  - repo: local
    hooks:
      - id: shfmt
        name: shfmt
        language: docker_image
        entry: mvdan/shfmt -i 2 -ci -sr -kp -w
        types: [shell]

      - id: shellcheck
        name: shellcheck
        language: docker_image
        entry: koalaman/shellcheck --color=always --severity=warning
        types: [shell]

      - id: requirements.txt
        name: requirements.txt
        description: Generate requirements.txt
        entry: tools/extract_requirements.py dev
        pass_filenames: false
        language: script
        files: setup.py$

      - id: config.yml
        name: config.yml
        description: Update config files
        entry: tools/update-config-files.sh
        pass_filenames: false
        language: script
        files: ^installer/config.yml$

      - id: legacy-assets-checksum-update
        name: legacy-assets-checksum-update
        description: Update legacy assets checksum
        entry: legacy/tools/assets-checksum-update.py
        pass_filenames: false
        language: script
        files: ^legacy