# 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-yaml
      - id: check-added-large-files
      - id: fix-byte-order-marker
      - id: check-case-conflict
      - id: end-of-file-fixer
      - id: trailing-whitespace
      - id: mixed-line-ending
      - id: debug-statements
  - repo: https://github.com/pycqa/flake8
    rev: 5.0.4
    hooks:
      - id: flake8
        args: ['--config=.flake8', '--tee', '--benchmark']
  - repo: https://github.com/pre-commit/mirrors-mypy
    rev: v0.981
    hooks:
      - id: mypy
        exclude: >
           (?x)^(
               .*.py
           )$
  - repo: https://github.com/myint/unify
    rev: v0.5
    hooks:
      - id: unify
  - repo: https://github.com/pre-commit/mirrors-yapf
    rev: "v0.32.0"
    hooks:
      - id: yapf
        args: ['style={based_on_style: google, column_limit: 160, indent_width: 4}']
  - repo: https://github.com/pre-commit/mirrors-isort
    rev: v5.10.1
    hooks:
      - id: isort
  - repo: https://github.com/myint/eradicate/
    rev: v2.1.0
    hooks:
      - id: eradicate
  - repo: https://github.com/espressif/check-copyright/
    rev: v1.0.3
    hooks:
      - id: check-copyright
        args: ['--ignore', 'ci/check_copyright_ignore.txt', '--config', 'ci/check_copyright_config.yaml']
  - repo: https://github.com/igrr/astyle_py.git
    rev: v1.0.5
    hooks:
    -   id: astyle_py
        args: ['--style=otbs', '--attach-namespaces', '--attach-classes', '--indent=spaces=4', '--convert-tabs', '--align-pointer=name', '--align-reference=name', '--keep-one-line-statements', '--pad-header', '--pad-oper', '--exclude-list=ci/ignore_astyle.txt']
  - repo: https://github.com/commitizen-tools/commitizen
    rev: v2.42.1
    hooks:
      - id: commitizen
      - id: commitizen-branch
        stages: [push, manual]
  - repo: local
    hooks:
      - id: commit message scopes
        name: "commit message must be scoped with: mdns, modem, websocket, asio, mqtt_cxx, console, common, eppp, tls_cxx, mosq, sockutls"
        entry: '\A(?!(feat|fix|ci|bump|test|docs|chore)\((mdns|modem|common|console|websocket|asio|mqtt_cxx|examples|eppp|tls_cxx|mosq|sockutls)\)\:)'
        language: pygrep
        args: [--multiline]
        stages: [commit-msg]
