mirror of
https://github.com/minetest/contentdb.git
synced 2025-03-29 13:22:31 +01:00
Add check for license files to release validation
This commit is contained in:
@ -127,6 +127,9 @@ def post_release_check_update(self, release: PackageRelease, path):
|
|||||||
deps = ", ".join(depends)
|
deps = ", ".join(depends)
|
||||||
raise MinetestCheckError("Game has unresolved hard dependencies: " + deps)
|
raise MinetestCheckError("Game has unresolved hard dependencies: " + deps)
|
||||||
|
|
||||||
|
if package.state != PackageState.APPROVED and tree.find_license_file() is None:
|
||||||
|
raise MinetestCheckError("Package needs to have a LICENSE.txt/.md or COPYING file.")
|
||||||
|
|
||||||
# Add dependencies
|
# Add dependencies
|
||||||
for meta in get_meta_packages(depends):
|
for meta in get_meta_packages(depends):
|
||||||
db.session.add(Dependency(package, meta=meta, optional=False))
|
db.session.add(Dependency(package, meta=meta, optional=False))
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
|
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
|
from typing import Optional
|
||||||
|
|
||||||
from . import MinetestCheckError, ContentType
|
from . import MinetestCheckError, ContentType
|
||||||
from .config import parse_conf
|
from .config import parse_conf
|
||||||
@ -78,7 +79,7 @@ class PackageTreeNode:
|
|||||||
self.read_meta()
|
self.read_meta()
|
||||||
|
|
||||||
if self.type == ContentType.GAME:
|
if self.type == ContentType.GAME:
|
||||||
if not os.path.isdir(base_dir + "/mods"):
|
if not os.path.isdir(os.path.join(base_dir, "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("mods")
|
self.add_children_from_mod_dir("mods")
|
||||||
elif self.type == ContentType.MOD:
|
elif self.type == ContentType.MOD:
|
||||||
@ -92,6 +93,15 @@ class PackageTreeNode:
|
|||||||
elif self.type == ContentType.MODPACK:
|
elif self.type == ContentType.MODPACK:
|
||||||
self.add_children_from_mod_dir(None)
|
self.add_children_from_mod_dir(None)
|
||||||
|
|
||||||
|
def find_license_file(self) -> Optional[str]:
|
||||||
|
names = ["LICENSE", "LICENSE.md", "LICENSE.txt", "COPYING"]
|
||||||
|
for name in names:
|
||||||
|
path = os.path.join(self.baseDir, name)
|
||||||
|
if os.path.isfile(path):
|
||||||
|
return path
|
||||||
|
|
||||||
|
return None
|
||||||
|
|
||||||
def check_dir_casing(self, dirs):
|
def check_dir_casing(self, dirs):
|
||||||
for dir in next(os.walk(self.baseDir))[1]:
|
for dir in next(os.walk(self.baseDir))[1]:
|
||||||
lowercase = dir.lower()
|
lowercase = dir.lower()
|
||||||
|
Reference in New Issue
Block a user