---
repos:
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v6.0.0
    hooks:
      # whitespace
      - id: trailing-whitespace
      - id: mixed-line-ending
        args: ['--fix', 'lf']
        exclude: '.*\.(svg)$'
      # file format and permissions
      - id: fix-byte-order-marker
      - id: check-executables-have-shebangs
      - id: check-shebang-scripts-are-executable
      - id: check-json
        files: .*\.json$
      - id: check-yaml
        files: .*\.(yaml|yml)$
      # git
      - id: check-added-large-files
      - id: check-merge-conflict
      - id: check-case-conflict
      - id: detect-private-key
        exclude: '^doc/api_samples/.*|^nova/tests/.*'
      # python
      - id: debug-statements
        # nova/cmd/manage.py imports pdb on purpose.
        exclude: 'nova/cmd/manage.py'
      - id: check-docstring-first
        exclude: 'nova/virt/ironic/ironic_states.py'

  - repo: https://github.com/Lucas-C/pre-commit-hooks
    rev: v1.5.6
    hooks:
      - id: remove-tabs
        exclude: '.*\.(svg)$'

  - repo: https://github.com/hhatto/autopep8
    rev: v2.3.2
    hooks:
      - id: autopep8
        files: '^.*\.py$'

  # run hacking after autopep8 so that if it can fix
  # it it will. note it will still fail in ci because
  # fixing an issue changes the code and that should
  # not happen in ci.
  - repo: https://opendev.org/openstack/hacking
    rev: 8.0.0
    hooks:
      - id: hacking
        additional_dependencies: []
        exclude: '^(doc|releasenotes|tools)/.*$'

  - repo: https://github.com/codespell-project/codespell
    rev: v2.4.1
    hooks:
      - id: codespell
        args: ['--ignore-words=doc/dictionary.txt']

  - repo: https://github.com/sphinx-contrib/sphinx-lint
    rev: v1.0.2
    hooks:
      - id: sphinx-lint
        args: [--enable=default-role]
        files: ^doc/|releasenotes|api-guide
        types: [rst]
