From 1bd80e57aaf2fb063b77a3cb7dce892b4b086bf1 Mon Sep 17 00:00:00 2001 From: Sefa Eyeoglu Date: Tue, 5 Apr 2022 15:10:28 +0200 Subject: [PATCH] refactor: move GradleSpecifier into model --- generateFabric.py | 3 +- generateForge.py | 1 + meta/model/__init__.py | 92 +++++++++++++++++++++++++++++++++++++++++- meta/model/types.py | 92 ------------------------------------------ updateFabric.py | 5 ++- 5 files changed, 96 insertions(+), 97 deletions(-) delete mode 100644 meta/model/types.py diff --git a/generateFabric.py b/generateFabric.py index cfdcdf4..fb1c133 100755 --- a/generateFabric.py +++ b/generateFabric.py @@ -3,9 +3,8 @@ import os from meta.common import ensure_component_dir, polymc_path, upstream_path, transform_maven_key from meta.common.fabric import JARS_DIR, INSTALLER_INFO_DIR, META_DIR, INTERMEDIARY_COMPONENT, LOADER_COMPONENT -from meta.model import MetaVersion, Dependency, Library, MetaPackage +from meta.model import MetaVersion, Dependency, Library, MetaPackage, GradleSpecifier from meta.model.fabric import FabricJarInfo, FabricInstallerDataV1, FabricMainClasses -from meta.model.types import GradleSpecifier PMC_DIR = polymc_path() UPSTREAM_DIR = upstream_path() diff --git a/generateForge.py b/generateForge.py index 6c70d9e..6327c11 100755 --- a/generateForge.py +++ b/generateForge.py @@ -389,5 +389,6 @@ def main(): package.recommended = recommendedVersions package.write(os.path.join(PMC_DIR, FORGE_COMPONENT, "package.json")) + if __name__ == '__main__': main() diff --git a/meta/model/__init__.py b/meta/model/__init__.py index 3cc6a3b..4371814 100644 --- a/meta/model/__init__.py +++ b/meta/model/__init__.py @@ -4,12 +4,102 @@ from typing import Optional, List, Dict, Any, Iterator import pydantic from pydantic import Field, validator -from .types import GradleSpecifier from ..common import serialize_datetime META_FORMAT_VERSION = 1 +class GradleSpecifier: + """ + A gradle specifier - a maven coordinate. Like one of these: + "org.lwjgl.lwjgl:lwjgl:2.9.0" + "net.java.jinput:jinput:2.0.5" + "net.minecraft:launchwrapper:1.5" + """ + + def __init__(self, group: str, artifact: str, version: str, classifier: Optional[str] = None, + extension: Optional[str] = None): + if extension is None: + extension = "jar" + self.group = group + self.artifact = artifact + self.version = version + self.classifier = classifier + self.extension = extension + + def __str__(self): + ext = '' + if self.extension != 'jar': + ext = "@%s" % self.extension + if self.classifier: + return "%s:%s:%s:%s%s" % (self.group, self.artifact, self.version, self.classifier, ext) + else: + return "%s:%s:%s%s" % (self.group, self.artifact, self.version, ext) + + def filename(self): + if self.classifier: + return "%s-%s-%s.%s" % (self.artifact, self.version, self.classifier, self.extension) + else: + return "%s-%s.%s" % (self.artifact, self.version, self.extension) + + def base(self): + return "%s/%s/%s/" % (self.group.replace('.', '/'), self.artifact, self.version) + + def path(self): + return self.base() + self.filename() + + def __repr__(self): + return f"GradleSpecifier('{self}')" + + def is_lwjgl(self): + return self.group in ("org.lwjgl", "org.lwjgl.lwjgl", "net.java.jinput", "net.java.jutils") + + def is_log4j(self): + return self.group == "org.apache.logging.log4j" + + def __eq__(self, other): + return str(self) == str(other) + + def __lt__(self, other): + return str(self) < str(other) + + def __gt__(self, other): + return str(self) > str(other) + + def __hash__(self): + return hash(str(self)) + + @classmethod + def __get_validators__(cls): + yield cls.validate + + @classmethod + def from_string(cls, v: str): + ext_split = v.split('@') + + components = ext_split[0].split(':') + group = components[0] + artifact = components[1] + version = components[2] + + extension = None + if len(ext_split) == 2: + extension = ext_split[1] + + classifier = None + if len(components) == 4: + classifier = components[3] + return cls(group, artifact, version, classifier, extension) + + @classmethod + def validate(cls, v): + if isinstance(v, cls): + return v + if isinstance(v, str): + return cls.from_string(v) + raise TypeError("Invalid type") + + class MetaBase(pydantic.BaseModel): def dict(self, **kwargs) -> Dict[str, Any]: for k in ["by_alias"]: diff --git a/meta/model/types.py b/meta/model/types.py deleted file mode 100644 index e06bfd6..0000000 --- a/meta/model/types.py +++ /dev/null @@ -1,92 +0,0 @@ -from typing import Optional - - -class GradleSpecifier: - """ - A gradle specifier - a maven coordinate. Like one of these: - "org.lwjgl.lwjgl:lwjgl:2.9.0" - "net.java.jinput:jinput:2.0.5" - "net.minecraft:launchwrapper:1.5" - """ - - def __init__(self, group: str, artifact: str, version: str, classifier: Optional[str] = None, - extension: Optional[str] = None): - if extension is None: - extension = "jar" - self.group = group - self.artifact = artifact - self.version = version - self.classifier = classifier - self.extension = extension - - def __str__(self): - ext = '' - if self.extension != 'jar': - ext = "@%s" % self.extension - if self.classifier: - return "%s:%s:%s:%s%s" % (self.group, self.artifact, self.version, self.classifier, ext) - else: - return "%s:%s:%s%s" % (self.group, self.artifact, self.version, ext) - - def filename(self): - if self.classifier: - return "%s-%s-%s.%s" % (self.artifact, self.version, self.classifier, self.extension) - else: - return "%s-%s.%s" % (self.artifact, self.version, self.extension) - - def base(self): - return "%s/%s/%s/" % (self.group.replace('.', '/'), self.artifact, self.version) - - def path(self): - return self.base() + self.filename() - - def __repr__(self): - return f"GradleSpecifier('{self}')" - - def is_lwjgl(self): - return self.group in ("org.lwjgl", "org.lwjgl.lwjgl", "net.java.jinput", "net.java.jutils") - - def is_log4j(self): - return self.group == "org.apache.logging.log4j" - - def __eq__(self, other): - return str(self) == str(other) - - def __lt__(self, other): - return str(self) < str(other) - - def __gt__(self, other): - return str(self) > str(other) - - def __hash__(self): - return hash(str(self)) - - @classmethod - def __get_validators__(cls): - yield cls.validate - - @classmethod - def from_string(cls, v: str): - ext_split = v.split('@') - - components = ext_split[0].split(':') - group = components[0] - artifact = components[1] - version = components[2] - - extension = None - if len(ext_split) == 2: - extension = ext_split[1] - - classifier = None - if len(components) == 4: - classifier = components[3] - return cls(group, artifact, version, classifier, extension) - - @classmethod - def validate(cls, v): - if isinstance(v, cls): - return v - if isinstance(v, str): - return cls.from_string(v) - raise TypeError("Invalid type") diff --git a/updateFabric.py b/updateFabric.py index 3170805..3d70779 100755 --- a/updateFabric.py +++ b/updateFabric.py @@ -1,15 +1,16 @@ import hashlib -import zipfile import json import os +import zipfile from datetime import datetime import requests from cachecontrol import CacheControl from cachecontrol.caches import FileCache -from meta.model.fabric import FabricJarInfo + from meta.common import DATETIME_FORMAT_HTTP, upstream_path, ensure_upstream_dir, transform_maven_key from meta.common.fabric import JARS_DIR, INSTALLER_INFO_DIR, META_DIR +from meta.model.fabric import FabricJarInfo UPSTREAM_DIR = upstream_path()