summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSefa Eyeoglu <contact@scrumplex.net>2023-11-01 10:43:35 +0100
committerSefa Eyeoglu <contact@scrumplex.net>2023-11-01 10:43:35 +0100
commit0baa8da3759667eb1247c6dbee33c213b1b75619 (patch)
tree56c1b59c71b4fced806ed17ef4e9961790bd3beb
parent4681822576acf14b242f8b722abb8f31e45e209d (diff)
downloadProject-Tick-0baa8da3759667eb1247c6dbee33c213b1b75619.tar.gz
Project-Tick-0baa8da3759667eb1247c6dbee33c213b1b75619.zip
feat: support NeoForge 1.20.2+
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
-rw-r--r--meta/model/neoforge.py19
-rw-r--r--updateNeoForge.py64
2 files changed, 65 insertions, 18 deletions
diff --git a/meta/model/neoforge.py b/meta/model/neoforge.py
index a13605c282..4a110cf300 100644
--- a/meta/model/neoforge.py
+++ b/meta/model/neoforge.py
@@ -8,20 +8,28 @@ from .mojang import MojangVersion
class NeoForgeFile(MetaBase):
+ artifact: str
classifier: str
extension: str
def filename(self, long_version):
- return "%s-%s-%s.%s" % ("forge", long_version, self.classifier, self.extension)
+ return "%s-%s-%s.%s" % (
+ self.artifact,
+ long_version,
+ self.classifier,
+ self.extension,
+ )
def url(self, long_version):
- return "https://maven.neoforged.net/net/neoforged/forge/%s/%s" % (
+ return "https://maven.neoforged.net/net/neoforged/%s/%s/%s" % (
+ self.artifact,
long_version,
self.filename(long_version),
)
class NeoForgeEntry(MetaBase):
+ artifact: str
long_version: str = Field(alias="longversion")
mc_version: str = Field(alias="mcversion")
version: str
@@ -174,6 +182,9 @@ class NeoForgeVersion:
def __init__(self, entry: NeoForgeEntry):
self.build = entry.build
self.rawVersion = entry.version
+ if entry.artifact == "neoforge":
+ self.rawVersion = entry.long_version
+
self.mc_version = entry.mc_version
self.mc_version_sane = self.mc_version.replace("_pre", "-pre", 1)
self.branch = entry.branch
@@ -182,9 +193,7 @@ class NeoForgeVersion:
self.universal_filename = None
self.universal_url = None
self.changelog_url = None
- self.long_version = "%s-%s" % (self.mc_version, self.rawVersion)
- if self.branch is not None:
- self.long_version += "-%s" % self.branch
+ self.long_version = entry.long_version
# this comment's whole purpose is to say this: cringe
for classifier, file in entry.files.items():
diff --git a/updateNeoForge.py b/updateNeoForge.py
index 431930c401..2ff8be5d9d 100644
--- a/updateNeoForge.py
+++ b/updateNeoForge.py
@@ -67,7 +67,7 @@ def find_nth(haystack, needle, n):
return start
-def get_single_forge_files_manifest(longversion):
+def get_single_forge_files_manifest(longversion, artifact: str):
print(f"Getting NeoForge manifest for {longversion}")
path_thing = UPSTREAM_DIR + "/neoforge/files_manifests/%s.json" % longversion
files_manifest_file = Path(path_thing)
@@ -78,7 +78,7 @@ def get_single_forge_files_manifest(longversion):
from_file = True
else:
file_url = (
- "https://maven.neoforged.net/api/maven/details/releases/net%2Fneoforged%2Fforge%2F"
+ f"https://maven.neoforged.net/api/maven/details/releases/net%2Fneoforged%2F{artifact}%2F"
+ urllib.parse.quote(longversion)
)
r = sess.get(file_url)
@@ -90,14 +90,26 @@ def get_single_forge_files_manifest(longversion):
for file in files_json.get("files"):
assert type(file) == dict
name = file["name"]
- file_name, file_ext = os.path.splitext(name)
- if file_ext in [".md5", ".sha1", ".sha256", ".sha512"]:
+ prefix = f"{artifact}-{longversion}"
+ assert name.startswith(
+ prefix
+ ), f"{longversion} classifier {name} doesn't start with {prefix}"
+ file_name = name[len(prefix) :]
+ if file_name.startswith("-"):
+ file_name = file_name[1:]
+ if file_name.startswith("."):
continue
- classifier = file["name"][find_nth(name, "-", 3) + 1 : len(file_name)]
+ print(f"AAAA {file_name}")
+ classifier, ext = os.path.splitext(file_name)
+
+ if ext in [".md5", ".sha1", ".sha256", ".sha512"]:
+ continue
# assert len(extensionObj.items()) == 1
- file_obj = NeoForgeFile(classifier=classifier, extension=file_ext[1:])
+ file_obj = NeoForgeFile(
+ artifact=artifact, classifier=classifier, extension=ext[1:]
+ )
ret_dict[classifier] = file_obj
if not from_file:
@@ -117,32 +129,58 @@ def main():
main_json = r.json()["versions"]
assert type(main_json) == list
+ # get the new remote version list fragments
+ r = sess.get(
+ "https://maven.neoforged.net/api/maven/versions/releases/net%2Fneoforged%2Fneoforge"
+ )
+ r.raise_for_status()
+ new_main_json = r.json()["versions"]
+ assert type(new_main_json) == list
+
+ main_json += new_main_json
+
new_index = DerivedNeoForgeIndex()
version_expression = re.compile(
- "^(?P<mc>[0-9a-zA-Z_\\.]+)-(?P<ver>[0-9\\.]+\\.(?P<build>[0-9]+))(-(?P<branch>[a-zA-Z0-9\\.]+))?$"
+ r"^(?P<mc>[0-9a-zA-Z_\.]+)-(?P<ver>[0-9\.]+\.(?P<build>[0-9]+))(-(?P<branch>[a-zA-Z0-9\.]+))?$"
+ )
+ neoforge_version_re = re.compile(
+ r"^(?P<mcminor>\d+).(?P<mcpatch>\d+).(?P<number>\d+)(?:-(?P<tag>\w+))?$"
)
print("")
print("Processing versions:")
for long_version in main_json:
assert type(long_version) == str
- mc_version = long_version.split("-")[0]
+
match = version_expression.match(long_version)
+ if match:
+ mc_version = match.group("mc")
+ build = int(match.group("build"))
+ version = match.group("ver")
+ branch = match.group("branch")
+ artifact = "forge"
+
+ match_nf = neoforge_version_re.match(long_version)
+ if match_nf:
+ mc_version = f"1.{match_nf.group('mcminor')}.{match_nf.group('mcpatch')}"
+ build = int(match_nf.group("number"))
+ version = match_nf.group("number")
+ branch = match_nf.group("tag")
+ match = match_nf
+ artifact = "neoforge"
+
assert match, f"{long_version} doesn't match version regex"
- assert match.group("mc") == mc_version
try:
- files = get_single_forge_files_manifest(long_version)
+ files = get_single_forge_files_manifest(long_version, artifact)
except:
continue
- build = int(match.group("build"))
- version = match.group("ver")
- branch = match.group("branch")
# TODO: what *is* recommended?
is_recommended = False
entry = NeoForgeEntry(
+ artifact=artifact,
long_version=long_version,
mc_version=mc_version,
version=version,