aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrubenwardy <rw@rubenwardy.com>2020-07-12 03:09:01 +0100
committerrubenwardy <rw@rubenwardy.com>2020-07-12 03:09:01 +0100
commita123f422911c7c543b35ca405ecb4524f905a1a9 (patch)
treef9afaca569e197829008fdad73902ea878c4c34e
parente6a7df6144b1d43124306851a66554db45a4ffa5 (diff)
downloadcheatdb-a123f422911c7c543b35ca405ecb4524f905a1a9.tar.xz
Fix incorrect mod name fold in MinetestCheck
-rw-r--r--app/tasks/importtasks.py4
-rw-r--r--app/tasks/minetestcheck/tree.py40
2 files changed, 28 insertions, 16 deletions
diff --git a/app/tasks/importtasks.py b/app/tasks/importtasks.py
index 0568949..1361afe 100644
--- a/app/tasks/importtasks.py
+++ b/app/tasks/importtasks.py
@@ -161,7 +161,7 @@ def updateMetaFromRelease(self, id, path):
def getMetaPackages(names):
return [ MetaPackage.GetOrCreate(x, cache) for x in names ]
- provides = getMetaPackages(tree.fold("name"))
+ provides = getMetaPackages(tree.getModNames())
package = release.package
package.provides.clear()
@@ -206,7 +206,7 @@ def getMeta(urlstr, author):
result = {}
result["name"] = tree.name
- result["provides"] = tree.fold("name")
+ result["provides"] = tree.getModNames()
result["type"] = tree.type.name
for key in ["depends", "optional_depends"]:
diff --git a/app/tasks/minetestcheck/tree.py b/app/tasks/minetestcheck/tree.py
index d078545..66dcbc8 100644
--- a/app/tasks/minetestcheck/tree.py
+++ b/app/tasks/minetestcheck/tree.py
@@ -144,26 +144,38 @@ class PackageTreeNode:
self.children.append(child)
+ def getModNames(self):
+ return self.fold("name", type=ContentType.MOD)
+
+ # attr: Attribute name
+ # key: Key in attribute
+ # retval: Accumulator
+ # type: Filter to type
+ def fold(self, attr, key=None, retval=None, type=None):
+ if retval is None:
+ retval = set()
+
+ # Iterate through children
+ for child in self.children:
+ child.fold(attr, key, retval, type)
- def fold(self, attr, key=None, acc=None):
- if acc is None:
- acc = set()
-
- if self.meta is None:
- return acc
+ # Filter on type
+ if type and type != self.type:
+ return retval
+ # Get attribute
at = getattr(self, attr)
- value = at if key is None else at.get(key)
+ if not at:
+ return retval
+ # Get value
+ value = at if key is None else at.get(key)
if isinstance(value, list):
- acc |= set(value)
- elif value is not None:
- acc.add(value)
-
- for child in self.children:
- child.fold(attr, key, acc)
+ retval |= set(value)
+ elif value:
+ retval.add(value)
- return acc
+ return retval
def get(self, key):
return self.meta.get(key)