summaryrefslogtreecommitdiffstats
path: root/.pre-commit-config.yaml
diff options
context:
space:
mode:
Diffstat (limited to '.pre-commit-config.yaml')
-rw-r--r--.pre-commit-config.yaml243
1 files changed, 243 insertions, 0 deletions
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
new file mode 100644
index 0000000..71de0c4
--- /dev/null
+++ b/.pre-commit-config.yaml
@@ -0,0 +1,243 @@
+---
+ci:
+ # format compatible with commitlint
+ autoupdate_commit_msg: "chore: pre-commit autoupdate"
+ autoupdate_schedule: monthly
+ autofix_commit_msg: |
+ chore: auto fixes from pre-commit.com hooks
+
+ for more information, see https://pre-commit.ci
+ skip:
+ # https://github.com/pre-commit-ci/issues/issues/55
+ - pip-compile
+ - schemas
+ submodules: true
+exclude: >
+ (?x)^(
+ .config/requirements.*|
+ .vscode/extensions.json|
+ .vscode/settings.json|
+ examples/broken/encoding.j2|
+ test/schemas/data/licenses.json|
+ test/schemas/package-lock.json|
+ test/schemas/negative_test|
+ examples/broken/yaml-with-tabs/invalid-due-tabs.yaml|
+ examples/playbooks/collections/.*
+ )$
+repos:
+ - repo: meta
+ hooks:
+ - id: check-useless-excludes
+ - repo: https://github.com/pre-commit/mirrors-prettier
+ # keep it before yamllint
+ rev: v3.0.0-alpha.4
+ hooks:
+ - id: prettier
+ # Temporary excludes so we can gradually normalize the formatting
+ exclude: >
+ (?x)^(
+ .*\.md$|
+ examples/other/some.j2.yaml|
+ examples/playbooks/example.yml|
+ examples/playbooks/multiline-brackets.*|
+ examples/playbooks/templates/not-valid.yaml|
+ examples/playbooks/with-umlaut-.*|
+ examples/playbooks/with-skip-tag-id.yml|
+ examples/yamllint/.*|
+ examples/playbooks/collections/.*|
+ test/fixtures/formatting-before/.*|
+ test/schemas/data/.*|
+ test/schemas/(negative_test|test)/.*\.md|
+ src/ansiblelint/schemas/(molecule|tasks|playbook).json|
+ src/ansiblelint/schemas/ansible-navigator-config.json
+ )$
+ always_run: true
+ additional_dependencies:
+ - prettier
+ - prettier-plugin-toml
+ - prettier-plugin-sort-json
+ - repo: https://github.com/streetsidesoftware/cspell-cli
+ rev: v6.22.0
+ hooks:
+ - id: cspell
+ # entry: codespell --relative
+ args: [--relative, --no-progress, --no-summary]
+ name: Spell check with cspell
+ - repo: https://github.com/sirosen/check-jsonschema
+ rev: 0.21.0
+ hooks:
+ - id: check-github-workflows
+ - repo: https://github.com/pre-commit/pre-commit-hooks.git
+ rev: v4.4.0
+ hooks:
+ - id: end-of-file-fixer
+ # ignore formatting-prettier to have an accurate prettier comparison
+ exclude: >
+ (?x)^(
+ test/eco/.*.result|
+ examples/yamllint/.*|
+ test/fixtures/formatting-before/.*|
+ test/fixtures/formatting-prettier/.*
+ )$
+ - id: trailing-whitespace
+ exclude: >
+ (?x)^(
+ examples/playbooks/(with-skip-tag-id|unicode).yml|
+ examples/playbooks/example.yml|
+ examples/yamllint/.*|
+ test/eco/.*.result|
+ test/fixtures/formatting-before/.*
+ )$
+ - id: mixed-line-ending
+ - id: fix-byte-order-marker
+ - id: check-executables-have-shebangs
+ - id: check-merge-conflict
+ - id: debug-statements
+ language_version: python3
+ - repo: https://github.com/codespell-project/codespell
+ rev: v2.2.2
+ hooks:
+ - id: codespell
+ exclude: >
+ (?x)^(
+ .config/dictionary.txt|
+ examples/broken/encoding.j2|
+ test/schemas/negative_test/.*|
+ test/schemas/test/.*|
+ src/ansiblelint/schemas/.*\.json
+ )$
+ additional_dependencies:
+ - tomli
+ - repo: https://github.com/adrienverge/yamllint.git
+ rev: v1.29.0
+ hooks:
+ - id: yamllint
+ exclude: >
+ (?x)^(
+ examples/playbooks/templates/.*|
+ examples/yamllint/.*|
+ examples/other/some.j2.yaml|
+ examples/playbooks/collections/.*|
+ test/fixtures/formatting-before/.*
+ )$
+ files: \.(yaml|yml)$
+ types: [file, yaml]
+ entry: yamllint --strict
+ - repo: https://github.com/PyCQA/isort
+ rev: 5.12.0
+ hooks:
+ - id: isort
+ args:
+ # https://github.com/pre-commit/mirrors-isort/issues/9#issuecomment-624404082
+ - --filter-files
+ - repo: https://github.com/psf/black
+ rev: 23.1.0
+ hooks:
+ - id: black
+ language_version: python3
+ - repo: https://github.com/pycqa/flake8.git
+ rev: 6.0.0
+ hooks:
+ - id: flake8
+ language_version: python3
+ additional_dependencies:
+ - flake8-2020>=1.6.0
+ # - flake8-black>=0.1.1
+ - flake8-docstrings>=1.5.0
+ - flake8-print>=5.0
+ - flake8-pytest-style>=1.2.2
+ - flake8-future-annotations>=0.0.3
+ - repo: https://github.com/asottile/pyupgrade
+ # keep it after flake8
+ rev: v3.3.1
+ hooks:
+ - id: pyupgrade
+ args: ["--py38-plus"]
+ - repo: https://github.com/pre-commit/mirrors-mypy
+ rev: v1.0.0
+ hooks:
+ - id: mypy
+ # empty args needed in order to match mypy cli behavior
+ args: [--strict]
+ additional_dependencies:
+ - ansible-compat
+ - black>=22.10.0
+ - cryptography>=39.0.1
+ - filelock
+ - jinja2
+ - pytest>=7.2.0
+ - rich>=13.2.0
+ - ruamel.yaml
+ - subprocess-tee
+ - types-PyYAML
+ - types-jsonschema>=4.4.2
+ - types-pkg_resources
+ - types-setuptools
+ - wcmatch
+ exclude: >
+ (?x)^(
+ test/local-content/.*|
+ plugins/.*
+ )$
+ - repo: https://github.com/pycqa/pylint
+ rev: v2.16.1
+ hooks:
+ - id: pylint
+ args:
+ - --output-format=colorized
+ additional_dependencies:
+ - ansible-compat
+ - ansible-core>=2.14.0
+ - black>=22.10.0
+ - docutils
+ - filelock
+ - jsonschema>=4.9.0
+ - pytest>=7.2.0
+ - pyyaml
+ - rich>=13.2.0
+ - ruamel.yaml
+ - typing_extensions
+ - wcmatch
+ - yamllint
+ - repo: https://github.com/jazzband/pip-tools
+ rev: 6.12.2
+ hooks:
+ - id: pip-compile
+ name: lock
+ always_run: true
+ entry: pip-compile --resolver=backtracking -q --no-annotate --output-file=.config/requirements-lock.txt pyproject.toml --strip-extras --unsafe-package ruamel-yaml-clib
+ language: python
+ files: ^.config\/requirements.*$
+ alias: lock
+ stages: [manual]
+ language_version: "3.9" # minimal we support officially
+ additional_dependencies:
+ - pip>=22.3.1
+ - id: pip-compile
+ name: deps
+ entry: pip-compile --resolver=backtracking -q --no-annotate --output-file=.config/requirements.txt pyproject.toml --extra docs --extra test --strip-extras --unsafe-package ruamel-yaml-clib
+ language: python
+ files: ^.config\/requirements.*$
+ alias: deps
+ language_version: "3.9" # minimal we support officially
+ always_run: true
+ additional_dependencies:
+ - pip>=22.3.1
+ - id: pip-compile
+ entry: pip-compile --resolver=backtracking -q --no-annotate --output-file=.config/requirements.txt pyproject.toml --extra docs --extra test --strip-extras --unsafe-package ruamel-yaml-clib --upgrade
+ language: python
+ always_run: true
+ files: ^.config\/requirements.*$
+ alias: up
+ stages: [manual]
+ language_version: "3.9" # minimal we support officially
+ additional_dependencies:
+ - pip>=22.3.1
+ - # keep at bottom as these are slower
+ repo: local
+ hooks:
+ - id: schemas
+ name: update json schemas
+ entry: python3 src/ansiblelint/schemas/__main__.py
+ language: python
+ stages: [manual]