aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/tasks/importtasks.py4
-rw-r--r--app/tasks/minetestcheck/__init__.py4
-rw-r--r--app/tasks/minetestcheck/tree.py15
3 files changed, 16 insertions, 7 deletions
diff --git a/app/tasks/importtasks.py b/app/tasks/importtasks.py
index 13abf1c..ab5c0d5 100644
--- a/app/tasks/importtasks.py
+++ b/app/tasks/importtasks.py
@@ -164,11 +164,11 @@ def updateMetaFromRelease(self, id, path):
def getMetaPackages(names):
return [ MetaPackage.GetOrCreate(x, cache) for x in names ]
- provides = getMetaPackages(tree.getModNames())
+ provides = tree.getModNames()
package = release.package
package.provides.clear()
- package.provides.extend(provides)
+ package.provides.extend(getMetaPackages(tree.getModNames()))
# Delete all meta package dependencies
package.dependencies.filter(Dependency.meta_package != None).delete()
diff --git a/app/tasks/minetestcheck/__init__.py b/app/tasks/minetestcheck/__init__.py
index dbc57ad..deec46e 100644
--- a/app/tasks/minetestcheck/__init__.py
+++ b/app/tasks/minetestcheck/__init__.py
@@ -24,14 +24,14 @@ class ContentType(Enum):
if self == ContentType.MOD:
if not other.isModLike():
- raise MinetestCheckError("expected a mod or modpack, found " + other.value)
+ raise MinetestCheckError("Expected a mod or modpack, found " + other.value)
elif self == ContentType.TXP:
if other != ContentType.UNKNOWN and other != ContentType.TXP:
raise MinetestCheckError("expected a " + self.value + ", found a " + other.value)
elif other != self:
- raise MinetestCheckError("expected a " + self.value + ", found a " + other.value)
+ raise MinetestCheckError("Expected a " + self.value + ", found a " + other.value)
from .tree import PackageTreeNode, get_base_dir
diff --git a/app/tasks/minetestcheck/tree.py b/app/tasks/minetestcheck/tree.py
index 8d66a8c..c79252a 100644
--- a/app/tasks/minetestcheck/tree.py
+++ b/app/tasks/minetestcheck/tree.py
@@ -1,7 +1,9 @@
-import os
+import os, re
from . import MinetestCheckError, ContentType
from .config import parse_conf
+basenamePattern = re.compile("^([a-z0-9_]+)$")
+
def get_base_dir(path):
if not os.path.isdir(path):
raise IOError("Expected dir")
@@ -49,11 +51,16 @@ class PackageTreeNode:
if self.type == ContentType.GAME:
if not os.path.isdir(baseDir + "/mods"):
- raise MinetestCheckError(("game at {} does not have a mods/ folder").format(self.relative))
+ raise MinetestCheckError(("Game at {} does not have a mods/ folder").format(self.relative))
self.add_children_from_mod_dir(baseDir + "/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))
elif self.type == ContentType.MODPACK:
self.add_children_from_mod_dir(baseDir)
+
def getMetaFilePath(self):
filename = None
if self.type == ContentType.GAME:
@@ -100,7 +107,6 @@ class PackageTreeNode:
else:
try:
- import re
pattern = re.compile("^([a-z0-9_]+)\??$")
with open(self.baseDir + "/depends.txt", "r") as myfile:
@@ -153,6 +159,9 @@ class PackageTreeNode:
raise MinetestCheckError(("Expecting mod or modpack, found {} at {} inside {}") \
.format(child.type.value, child.relative, self.type.value))
+ if child.name is None:
+ raise MinetestCheckError(("Missing base name for mod at {}").format(self.relative))
+
self.children.append(child)
def getModNames(self):