feat: ensure Godot file naming convention correctly.

This commit is contained in:
Adrien Allard 2024-11-27 18:01:28 +01:00
parent a85f44e963
commit dc1120f2c7
2 changed files with 33 additions and 6 deletions

View File

@ -6,6 +6,7 @@
types: [text] types: [text]
exclude: | exclude: |
(?x)( (?x)(
^.pre-commit-config.yaml ^.vscode/.* |
^project/addons/.*
) )
stages: [pre-commit, pre-merge-commit, manual] stages: [pre-commit, pre-merge-commit, manual]

View File

@ -4,14 +4,40 @@ from pathlib import Path
from click import argument, command, echo from click import argument, command, echo
def check_path(path: Path) -> bool: valid_file_name = set([
str_path = str(path) ".editorconfig",
".gitattributes",
".gitignore",
".gitkeep",
".pre-commit-config.yaml",
"__init__.py",
"README.md",
])
if path.suffix == ".cs": pascal_case_extensions = set([
if re.search(r"^[a-zA-Z\\\/\._]*$", str_path) is None: ".cs",
".csproj",
".sln",
])
def check_path(path: Path) -> bool:
# folder names must use snake_case.
for parent in path.parents:
if parent.stem != "" and re.search(r"^[a-z]+(?:_[a-z0-9]+)*$", parent.stem) is None:
return False
# File name exceptions.
if valid_file_name.__contains__(path.name):
return True
if pascal_case_extensions.__contains__(path.suffix):
# Check that file name use PascalCase.
if re.search(r"[A-Z][a-z0-9]*(?:[A-Z][a-z0-9]*)*(?:[A-Z]?)$", path.stem) is None:
return False return False
else: else:
if re.search(r"^[a-z\\\/\._]*$", str_path) is None: # Check that file name use snake_case.
if re.search(r"[a-z]+(?:_[a-z0-9]+)*$", path.stem) is None:
return False return False
return True return True