From 5e425cd29cfc0329451a6a1818f43552d8aaf73a Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Sun, 1 Jan 2023 22:45:10 +0000 Subject: [PATCH] Validate mod directory casing --- app/tasks/minetestcheck/tree.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/app/tasks/minetestcheck/tree.py b/app/tasks/minetestcheck/tree.py index f59da35c..aade1a81 100644 --- a/app/tasks/minetestcheck/tree.py +++ b/app/tasks/minetestcheck/tree.py @@ -58,11 +58,17 @@ class PackageTreeNode: self.add_children_from_mod_dir("mods") elif self.type == ContentType.MOD: if self.name and not basenamePattern.match(self.name): - raise MinetestCheckError("Invalid base name for mod {} at {}, names must only contain a-z0-9_." \ - .format(self.name, self.relative)) + raise MinetestCheckError(f"Invalid base name for mod {self.name} at {self.relative}, names must only contain a-z0-9_.") + self.check_dir_casing(["textures", "media", "sounds", "models", "locale"]) elif self.type == ContentType.MODPACK: self.add_children_from_mod_dir(None) + def check_dir_casing(self, dirs): + for dir in next(os.walk(self.baseDir))[1]: + lowercase = dir.lower() + if lowercase != dir and lowercase in dirs: + raise MinetestCheckError(f"Incorrect case, {dir} should be {lowercase} at {self.relative}{dir}") + def getReadMePath(self): for filename in os.listdir(self.baseDir): path = os.path.join(self.baseDir, filename)