CI: Integrate pre-commit for style checks

This commit is contained in:
Thaddeus Crews
2024-11-14 13:54:08 -06:00
parent 5338ea5539
commit f70686cdbe
12 changed files with 30 additions and 62 deletions

View File

@@ -15,19 +15,11 @@ jobs:
- name: Checkout
uses: actions/checkout@v4
- name: Style checks via pre-commit
uses: pre-commit/action@v3.0.1
- name: Install dependencies
run: |
# Install tools used by `_tools/format.sh`.
sudo apt-get -qq update
sudo apt-get -qq install dos2unix recode
sudo pip3 install -r requirements.txt
sudo pip3 install codespell
- name: Linter checks
run: |
bash _tools/format.sh
codespell -D- -D _tools/codespell-dict.txt -I _tools/codespell-ignore.txt -x _tools/codespell-ignore-lines.txt -S tutorials/i18n/locales.rst {about,community,contributing,getting_started,tutorials}/{*.rst,**/*.rst,**/**/*.rst,**/**/**/*.rst}
run: sudo pip3 install -r requirements.txt
# Use dummy builder to improve performance as we don't need the generated HTML in this workflow.
- name: Sphinx build

18
.pre-commit-config.yaml Normal file
View File

@@ -0,0 +1,18 @@
default_language_version:
python: python3
repos:
- repo: https://github.com/codespell-project/codespell
rev: v2.3.0
hooks:
- id: codespell
files: ^(about|community|contributing|getting_started|tutorials)/.*\.rst$
additional_dependencies: [tomli]
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
hooks:
- id: end-of-file-fixer
- id: fix-byte-order-marker
- id: mixed-line-ending
args: ['--fix=lf']

View File

@@ -1,42 +0,0 @@
#!/usr/bin/env bash
set -uo pipefail
IFS=$'\n\t'
# Loops through all text files tracked by Git.
git grep -zIl '' |
while IFS= read -rd '' f; do
# Exclude csproj and hdr files.
if [[ "$f" == *"csproj" ]]; then
continue
elif [[ "$f" == *"hdr" ]]; then
continue
fi
# Ensures that files are UTF-8 formatted.
recode UTF-8 "$f" 2> /dev/null
# Ensures that files have LF line endings.
dos2unix "$f" 2> /dev/null
# Ensures that files do not contain a BOM.
sed -i '1s/^\xEF\xBB\xBF//' "$f"
# Ensures that files end with newline characters.
tail -c1 < "$f" | read -r _ || echo >> "$f";
done
git diff > patch.patch
FILESIZE="$(stat -c%s patch.patch)"
MAXSIZE=5
# If no patch has been generated all is OK, clean up, and exit.
if (( FILESIZE < MAXSIZE )); then
printf "Files in this commit comply with the formatting rules.\n"
rm -f patch.patch
exit 0
fi
# A patch has been created, notify the user, clean up, and exit.
printf "\n*** The following differences were found between the code "
printf "and the formatting rules:\n\n"
cat patch.patch
printf "\n*** Aborting, please fix your commit(s) with 'git commit --amend' or 'git rebase -i <hash>'\n"
rm -f patch.patch
exit 1

View File

@@ -1085,4 +1085,3 @@ Variant types
class_vector3i
class_vector4
class_vector4i

View File

@@ -108,4 +108,3 @@ Community support
Chances are you looked for learning materials outside of what the documentation provides.
Without content creators covering the game development process, there would not be this big of a community today.
Therefore it seemed only right to mention them in a page about important contributions to the project.

View File

@@ -181,4 +181,3 @@ Alternatively,
or built-in variable in the script editor.
* Right-clicking on nodes and choosing **Open Documentation** or choosing **Lookup Symbol**
for elements in script editor will directly open their documentation.

8
pyproject.toml Normal file
View File

@@ -0,0 +1,8 @@
[tool.ruff]
line-length = 120
[tool.codespell]
dictionary = ["_tools/codespell-dict.txt", "-"]
ignore-words = "_tools/codespell-ignore.txt"
exclude-file = "_tools/codespell-ignore-lines.txt"
skip = "tutorials/i18n/locales.rst"

View File

@@ -11,4 +11,3 @@ is not maintained or supported in Godot 4.x. While not officially supported, the
partially work for some Godot and Blender versions, particularly before Blender version 4.0.
For complete docs on the Blender exporter, see the
`previous version of this page <https://docs.godotengine.org/en/4.0/tutorials/assets_pipeline/escn_exporter/index.html>`__.

View File

@@ -119,4 +119,3 @@ Emacs
^^^^^
Check the official instructions to configure `LSP <https://github.com/godotengine/emacs-gdscript-mode#auto-completion-with-the-language-server-protocol-lsp>`_, and `DAP <https://github.com/godotengine/emacs-gdscript-mode#using-the-debugger>`_.

View File

@@ -694,4 +694,3 @@ The following script uses the NavigationServer to update a navigation region wit
NavigationServer3D.RegionSetNavigationMesh(_regionRid, _navigationMesh);
}
}

View File

@@ -182,4 +182,3 @@ If no path is supplied Godot will move the libraries into the same directory as
"res://bin/libdependency.linux.template_release.arm64.so" : "",
"res://bin/libdependency.linux.template_release.rv64.so" : ""
}

View File

@@ -385,4 +385,3 @@ This is why many XR runtimes only use it as a last resort and will attempt to us
This is our advice as well: limit your action map to the interaction profiles for devices you have actually tested your game with.
The Oculus Touch controller is widely used as a fallback controller by many runtimes.
If you are able to test your game using a Meta Rift or Quest and add this profile there is a high probability your game will work with other headsets.