refactor: merge MojangLibrary and Library

Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
This commit is contained in:
Sefa Eyeoglu 2023-11-04 22:39:42 +01:00
parent 2c509753c0
commit eb47993bf8
No known key found for this signature in database
GPG Key ID: E13DFD4B47127951
6 changed files with 15 additions and 48 deletions

View File

@ -173,10 +173,7 @@ def version_from_modernized_installer(
v.libraries = [] v.libraries = []
mc_filter = load_mc_version_filter(mc_version) mc_filter = load_mc_version_filter(mc_version)
for upstream_lib in installer.libraries: for forge_lib in installer.libraries:
forge_lib = Library.parse_obj(
upstream_lib.dict()
) # "cast" MojangLibrary to Library
if ( if (
forge_lib.name.is_lwjgl() forge_lib.name.is_lwjgl()
or forge_lib.name.is_log4j() or forge_lib.name.is_log4j()
@ -270,8 +267,7 @@ def version_from_build_system_installer(
) )
v.maven_files.append(installer_lib) v.maven_files.append(installer_lib)
for upstream_lib in profile.libraries: for forge_lib in profile.libraries:
forge_lib = Library.parse_obj(upstream_lib.dict())
if forge_lib.name.is_log4j(): if forge_lib.name.is_log4j():
continue continue
@ -289,8 +285,7 @@ def version_from_build_system_installer(
v.libraries.append(FORGEWRAPPER_LIBRARY) v.libraries.append(FORGEWRAPPER_LIBRARY)
for upstream_lib in installer.libraries: for forge_lib in installer.libraries:
forge_lib = Library.parse_obj(upstream_lib.dict())
if forge_lib.name.is_log4j(): if forge_lib.name.is_log4j():
continue continue

View File

@ -72,44 +72,20 @@ def version_from_build_system_installer(
) )
v.maven_files.append(installer_lib) v.maven_files.append(installer_lib)
for upstream_lib in profile.libraries: for forge_lib in profile.libraries:
forge_lib = Library.parse_obj(upstream_lib.dict())
if forge_lib.name.is_log4j(): if forge_lib.name.is_log4j():
continue continue
if (
forge_lib.name.group == "net.neoforged"
and forge_lib.name.artifact == version.artifact
and forge_lib.name.classifier == "universal"
):
# WORKAROUND: Early NeoForge 20.2 versions have an invalid version for universal jars. Instead of 1.20.2-20.2.20-beta it should just be 20.2.20-beta
# See https://github.com/neoforged/NeoGradle/issues/23
download_name = forge_lib.name
if version.artifact == "neoforge":
download_name = deepcopy(forge_lib.name)
download_name.version = version.long_version
forge_lib.downloads.artifact.url = (
"https://maven.neoforged.net/%s" % download_name.path()
)
v.maven_files.append(forge_lib) v.maven_files.append(forge_lib)
v.libraries = [] v.libraries = []
v.libraries.append(FORGEWRAPPER_LIBRARY) v.libraries.append(FORGEWRAPPER_LIBRARY)
for upstream_lib in installer.libraries: for forge_lib in installer.libraries:
forge_lib = Library.parse_obj(upstream_lib.dict())
if forge_lib.name.is_log4j(): if forge_lib.name.is_log4j():
continue continue
if forge_lib.name.group == "net.neoforged":
if forge_lib.name.artifact == version.artifact:
forge_lib.name.classifier = "launcher"
forge_lib.downloads.artifact.path = forge_lib.name.path()
forge_lib.downloads.artifact.url = (
"https://maven.neoforged.net/%s" % forge_lib.name.path()
)
forge_lib.name = forge_lib.name
v.libraries.append(forge_lib) v.libraries.append(forge_lib)
v.release_time = installer.release_time v.release_time = installer.release_time

View File

@ -281,15 +281,12 @@ class MojangRules(MetaBase):
return self.__root__[item] return self.__root__[item]
class MojangLibrary(MetaBase): class Library(MetaBase):
extract: Optional[MojangLibraryExtractRules] extract: Optional[MojangLibraryExtractRules]
name: Optional[GradleSpecifier] name: Optional[GradleSpecifier]
downloads: Optional[MojangLibraryDownloads] downloads: Optional[MojangLibraryDownloads]
natives: Optional[Dict[str, str]] natives: Optional[Dict[str, str]]
rules: Optional[MojangRules] rules: Optional[MojangRules]
class Library(MojangLibrary):
url: Optional[str] url: Optional[str]
mmcHint: Optional[str] = Field(None, alias="MMC-hint") mmcHint: Optional[str] = Field(None, alias="MMC-hint")

View File

@ -3,7 +3,7 @@ from typing import Optional, List, Dict
from pydantic import Field from pydantic import Field
from . import MetaBase, GradleSpecifier, MojangLibrary from . import MetaBase, GradleSpecifier, Library
from .mojang import MojangVersion from .mojang import MojangVersion
@ -46,7 +46,7 @@ class DerivedForgeIndex(MetaBase):
class FMLLib( class FMLLib(
MetaBase MetaBase
): # old ugly stuff. Maybe merge this with Library or MojangLibrary later ): # old ugly stuff. Maybe merge this with Library or Library later
filename: str filename: str
checksum: str checksum: str
ours: bool ours: bool
@ -91,7 +91,7 @@ class ForgeInstallerProfileInstallSection(MetaBase):
mod_list: Optional[str] = Field(alias="modList") mod_list: Optional[str] = Field(alias="modList")
class ForgeLibrary(MojangLibrary): class ForgeLibrary(Library):
url: Optional[str] url: Optional[str]
server_req: Optional[bool] = Field(alias="serverreq") server_req: Optional[bool] = Field(alias="serverreq")
client_req: Optional[bool] = Field(alias="clientreq") client_req: Optional[bool] = Field(alias="clientreq")
@ -176,7 +176,7 @@ class ForgeInstallerProfileV2(MetaBase):
welcome: Optional[str] welcome: Optional[str]
data: Optional[Dict[str, DataSpec]] data: Optional[Dict[str, DataSpec]]
processors: Optional[List[ProcessorSpec]] processors: Optional[List[ProcessorSpec]]
libraries: Optional[List[MojangLibrary]] libraries: Optional[List[Library]]
mirror_list: Optional[str] = Field(alias="mirrorList") mirror_list: Optional[str] = Field(alias="mirrorList")
server_jar_path: Optional[str] = Field(alias="serverJarPath") server_jar_path: Optional[str] = Field(alias="serverJarPath")

View File

@ -7,7 +7,6 @@ from . import (
MetaBase, MetaBase,
MojangArtifactBase, MojangArtifactBase,
MojangAssets, MojangAssets,
MojangLibrary,
MojangArtifact, MojangArtifact,
MojangLibraryDownloads, MojangLibraryDownloads,
Library, Library,
@ -216,7 +215,7 @@ class MojangVersion(MetaBase):
asset_index: Optional[MojangAssets] = Field(alias="assetIndex") asset_index: Optional[MojangAssets] = Field(alias="assetIndex")
assets: Optional[str] assets: Optional[str]
downloads: Optional[Dict[str, MojangArtifactBase]] # TODO improve this? downloads: Optional[Dict[str, MojangArtifactBase]] # TODO improve this?
libraries: Optional[List[MojangLibrary]] # TODO: optional? libraries: Optional[List[Library]] # TODO: optional?
main_class: Optional[str] = Field(alias="mainClass") main_class: Optional[str] = Field(alias="mainClass")
applet_class: Optional[str] = Field(alias="appletClass") applet_class: Optional[str] = Field(alias="appletClass")
processArguments: Optional[str] processArguments: Optional[str]

View File

@ -3,7 +3,7 @@ from typing import Optional, List, Dict
from pydantic import Field from pydantic import Field
from . import MetaBase, GradleSpecifier, MojangLibrary from . import MetaBase, GradleSpecifier, Library
from .mojang import MojangVersion from .mojang import MojangVersion
@ -53,7 +53,7 @@ class DerivedNeoForgeIndex(MetaBase):
class FMLLib( class FMLLib(
MetaBase MetaBase
): # old ugly stuff. Maybe merge this with Library or MojangLibrary later ): # old ugly stuff. Maybe merge this with Library or Library later
filename: str filename: str
checksum: str checksum: str
ours: bool ours: bool
@ -98,7 +98,7 @@ class NeoForgeInstallerProfileInstallSection(MetaBase):
mod_list: Optional[str] = Field(alias="modList") mod_list: Optional[str] = Field(alias="modList")
class NeoForgeLibrary(MojangLibrary): class NeoForgeLibrary(Library):
url: Optional[str] url: Optional[str]
server_req: Optional[bool] = Field(alias="serverreq") server_req: Optional[bool] = Field(alias="serverreq")
client_req: Optional[bool] = Field(alias="clientreq") client_req: Optional[bool] = Field(alias="clientreq")
@ -166,7 +166,7 @@ class NeoForgeInstallerProfileV2(MetaBase):
welcome: Optional[str] welcome: Optional[str]
data: Optional[Dict[str, DataSpec]] data: Optional[Dict[str, DataSpec]]
processors: Optional[List[ProcessorSpec]] processors: Optional[List[ProcessorSpec]]
libraries: Optional[List[MojangLibrary]] libraries: Optional[List[Library]]
mirror_list: Optional[str] = Field(alias="mirrorList") mirror_list: Optional[str] = Field(alias="mirrorList")
server_jar_path: Optional[str] = Field(alias="serverJarPath") server_jar_path: Optional[str] = Field(alias="serverJarPath")