godot/.pre-commit-config.yaml
Rémi Verschelde 00e52d975c
Pre-commit: Allow adding downstream hooks without (less) risk of conflicts
Apply Godot copyright header only on the platform folders that we maintain upstream.
This lets downstream forks decide what to do with their potential proprietary platforms.
2024-05-21 15:58:47 +02:00

202 lines
6.3 KiB
YAML

exclude: |
(?x)^(
.*thirdparty/.*|
.*-so_wrap\.(h|c)$
)
repos:
- repo: https://github.com/pre-commit/mirrors-clang-format
rev: v17.0.6
hooks:
- id: clang-format
files: \.(c|h|cpp|hpp|cc|cxx|m|mm|inc|java|glsl)$
types_or: [text]
exclude: |
(?x)^(
tests/python_build/.*|
platform/android/java/lib/src/com/.*
)
- repo: https://github.com/psf/black-pre-commit-mirror
rev: 24.2.0
hooks:
- id: black
files: (\.py$|SConstruct|SCsub)
types_or: [text]
- repo: https://github.com/pre-commit/mirrors-mypy
rev: v0.971
hooks:
- id: mypy
files: \.py$
types_or: [text]
- repo: https://github.com/codespell-project/codespell
rev: v2.2.6
hooks:
- id: codespell
types_or: [text]
exclude: |
(?x)^(
.*\.desktop$|
.*\.gitignore$|
.*\.po$|
.*\.pot$|
.*\.rc$|
\.mailmap$|
AUTHORS.md$|
COPYRIGHT.txt$|
DONORS.md$|
core/input/gamecontrollerdb.txt$|
core/string/locales.h$|
editor/project_converter_3_to_4.cpp$|
platform/android/java/lib/src/com/.*|
platform/web/package-lock.json$
)
args:
- --enable-colors
- --write-changes
- --check-hidden
- --quiet-level
- '3'
- --ignore-words-list
- aesthetic,aesthetics,breaked,cancelled,colour,curvelinear,doubleclick,expct,findn,gird,hel,inout,lod,mis,nd,numer,ot,requestor,te,thirdparty,vai
- --builtin
- clear,rare,en-GB_to_en-US
### Requires Docker; look into alternative implementation.
# - repo: https://github.com/comkieffer/pre-commit-xmllint.git
# rev: 1.0.0
# hooks:
# - id: xmllint
# language: docker
# types_or: [text]
# files: ^(doc/classes|.*/doc_classes)/.*\.xml$
# args: [--schema, doc/class.xsd]
- repo: https://github.com/pre-commit/mirrors-eslint
rev: v8.46.0
hooks:
- id: eslint
name: eslint-engine
files: ^(platform/web/js/engine/|js/jsdoc2rst/).*\.js$
args: [--fix, --no-eslintrc, --config, platform/web/.eslintrc.engine.js]
additional_dependencies: &eslint-deps
- eslint@8.46.0
- eslint-config-airbnb-base@15.0.0
- eslint-plugin-import@2.28.0
- eslint-plugin-html@7.1.0
- '@html-eslint/eslint-plugin@0.19.1'
- '@html-eslint/parser@0.19.1'
- id: eslint
name: eslint-libs
files: ^(platform/web/js/libs/|modules/).*\.js$
args: [--fix, --no-eslintrc, --config, platform/web/.eslintrc.libs.js]
additional_dependencies: *eslint-deps
- id: eslint
name: eslint-sw
files: ^misc/dist/html/service-worker\.js$
args: [--fix, --no-eslintrc, --config, platform/web/.eslintrc.sw.js]
additional_dependencies: *eslint-deps
- id: eslint
name: eslint-html
files: ^misc/dist/html/.*\.html$
types: [html]
args: [--fix, --no-eslintrc, --config, platform/web/.eslintrc.html.js]
additional_dependencies: *eslint-deps
- repo: local
hooks:
- id: make-rst
name: make-rst
language: python
entry: python3 doc/tools/make_rst.py doc/classes modules platform --dry-run --color
pass_filenames: false
files: ^(doc/classes|.*/doc_classes)/.*\.xml$
- id: doc-status
name: doc-status
language: python
entry: python3 doc/tools/doc_status.py
files: ^(doc/classes|.*/doc_classes)/.*\.xml$
- id: jsdoc
name: jsdoc
language: node
entry: jsdoc
files: ^platform/web/js/engine/(engine|config|features)\.js$
args:
- --template
- platform/web/js/jsdoc2rst/
- platform/web/js/engine/engine.js
- platform/web/js/engine/config.js
- platform/web/js/engine/features.js
- --destination
- ''
- -d
- dry-run
pass_filenames: false
additional_dependencies: ['jsdoc@^4.0.3']
- id: copyright-headers
name: copyright-headers
language: python
entry: python3 misc/scripts/copyright_headers.py
files: \.(c|h|cpp|hpp|cc|cxx|m|mm|inc|java)$
exclude: |
(?x)^(
core/math/bvh_.*\.inc$|
platform/(?!android|ios|linuxbsd|macos|web|windows)\w+/.*|
platform/android/java/lib/src/com/.*|
platform/android/java/lib/src/org/godotengine/godot/gl/GLSurfaceView\.java$|
platform/android/java/lib/src/org/godotengine/godot/gl/EGLLogWrapper\.java$|
platform/android/java/lib/src/org/godotengine/godot/utils/ProcessPhoenix\.java$
)
- id: header-guards
name: header-guards
language: python
entry: python3 misc/scripts/header_guards.py
files: \.(h|hpp)$
exclude: |
(?x)^(
.*/thread\.h$|
.*/platform_config\.h$|
.*/platform_gl\.$h
)
- id: file-format
name: file-format
language: python
entry: python3 misc/scripts/file_format.py
types_or: [text]
exclude: |
(?x)^(
.*\.test\.txt$|
.*\.svg$|
.*\.patch$|
.*\.out$|
modules/gdscript/tests/scripts/parser/features/mixed_indentation_on_blank_lines\.gd$|
modules/gdscript/tests/scripts/parser/warnings/empty_file_newline_comment\.notest\.gd$|
modules/gdscript/tests/scripts/parser/warnings/empty_file_newline\.notest\.gd$|
platform/android/java/lib/src/com/google/.*
)
- id: dotnet-format
name: dotnet-format
language: python
entry: python3 misc/scripts/dotnet_format.py
types_or: [c#]
# End of upstream Godot pre-commit hooks.
#
# Keep this separation to let downstream forks add their own hooks to this file,
# without running into merge conflicts when rebasing on latest upstream.
#
# Start of downstream pre-commit hooks.
#
# This is still the "repo: local" scope, so new local hooks can be defined directly at this indentation:
# - id: new-local-hook
# To add external repo hooks, bring the indentation back to:
# - repo: my-remote-hook