mirror of
https://github.com/unmojang/meta.git
synced 2025-09-24 03:31:03 -04:00
Merge pull request #2 from txtsd/mmc_to_pmc
Purge all MultiMC references and sundry
This commit is contained in:
commit
4fc08323cc
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,5 +1,5 @@
|
||||
http_cache
|
||||
multimc
|
||||
polymc
|
||||
upstream
|
||||
forgemaven
|
||||
forge_cache
|
||||
|
36
README.md
Normal file
36
README.md
Normal file
@ -0,0 +1,36 @@
|
||||
# PolyMC Meta
|
||||
Scripts to generate jsons and jars that PolyMC will access.
|
||||
|
||||
## Usage
|
||||
|
||||
### Install the dependencies
|
||||
|
||||
As root:
|
||||
```
|
||||
sudo pip install requirements.txt
|
||||
```
|
||||
|
||||
Or as user:
|
||||
```
|
||||
pip install --user requirements.txt
|
||||
```
|
||||
|
||||
### Initial setup
|
||||
This will clone [meta-polymc](https://github.com/PolyMC/meta-polymc) and [meta-upstream](https://github.com/PolyMC/meta-upstream)
|
||||
|
||||
```
|
||||
./clone.sh
|
||||
```
|
||||
|
||||
### Generate files
|
||||
This will run the main script and do its magic
|
||||
|
||||
```
|
||||
./update.sh
|
||||
```
|
||||
|
||||
### Check status of meta-polymc and meta-upstream
|
||||
|
||||
```
|
||||
./status.sh
|
||||
```
|
4
clone.sh
4
clone.sh
@ -12,6 +12,6 @@ if [ ! -d "${UPSTREAM_DIR}" ]; then
|
||||
git clone ${UPSTREAM_REPO} ${UPSTREAM_DIR}
|
||||
fi
|
||||
|
||||
if [ ! -d "${MMC_DIR}" ]; then
|
||||
git clone ${MMC_REPO} ${MMC_DIR}
|
||||
if [ ! -d "${PMC_DIR}" ]; then
|
||||
git clone ${PMC_REPO} ${PMC_DIR}
|
||||
fi
|
||||
|
@ -1,7 +1,7 @@
|
||||
export UPSTREAM_DIR=upstream
|
||||
export UPSTREAM_REPO=git@github.com:PolyMC/meta-upstream.git
|
||||
export MMC_DIR=multimc
|
||||
export MMC_REPO=git@github.com:PolyMC/meta-polymc.git
|
||||
export PMC_DIR=polymc
|
||||
export PMC_REPO=git@github.com:PolyMC/meta-polymc.git
|
||||
export BRANCH_master=master
|
||||
export BRANCH_develop=develop
|
||||
export DEPLOY_TO_S3=false
|
||||
|
@ -1,6 +1,6 @@
|
||||
export MODE=master
|
||||
export GIT_AUTHOR_NAME="Petr Mrázek"
|
||||
export GIT_AUTHOR_EMAIL="peterix@gmail.com"
|
||||
export GIT_AUTHOR_NAME="Herpington Derpson"
|
||||
export GIT_AUTHOR_EMAIL="herpderp@derpmail.com"
|
||||
export GIT_COMMITTER_NAME="$GIT_AUTHOR_NAME"
|
||||
export GIT_COMMITTER_EMAIL="$GIT_AUTHOR_EMAIL"
|
||||
export DEPLOY_TO_S3=false
|
||||
|
@ -1,20 +1,21 @@
|
||||
#!/usr/bin/python3
|
||||
from __future__ import print_function
|
||||
import sys
|
||||
import os
|
||||
import re
|
||||
from metautil import *
|
||||
from forgeutil import *
|
||||
from jsonobject import *
|
||||
import sys
|
||||
from distutils.version import LooseVersion
|
||||
from enum import Enum
|
||||
|
||||
import requests
|
||||
from cachecontrol import CacheControl
|
||||
from cachecontrol.caches import FileCache
|
||||
from forgeutil import *
|
||||
from jsonobject import *
|
||||
from metautil import *
|
||||
|
||||
#with open('multimc/index.json', 'r', encoding='utf-8') as index:
|
||||
#packages = MultiMCPackageIndex(json.load(index))
|
||||
PMC_DIR = os.environ["PMC_DIR"]
|
||||
|
||||
#with open(PMC_DIR + '/index.json', 'r', encoding='utf-8') as index:
|
||||
#packages = PolyMCPackageIndex(json.load(index))
|
||||
|
||||
#for entry in packages.packages:
|
||||
#print (entry)
|
||||
@ -54,17 +55,17 @@ class MojangLibrary (JsonObject):
|
||||
natives = DictProperty(StringProperty, exclude_if_none=True, default=None)
|
||||
rules = ListProperty(MojangRule, exclude_if_none=True, default=None)
|
||||
|
||||
class MultiMCLibrary (MojangLibrary):
|
||||
class PolyMCLibrary (MojangLibrary):
|
||||
url = StringProperty(exclude_if_none=True, default=None)
|
||||
mmcHint = StringProperty(name="MMC-hint", exclude_if_none=True, default=None)
|
||||
pmcHint = StringProperty(name="PMC-hint", exclude_if_none=True, default=None)
|
||||
|
||||
|
||||
def GetLibraryDownload (library : MultiMCLibrary):
|
||||
def GetLibraryDownload (library : PolyMCLibrary):
|
||||
if library.natives:
|
||||
raise Exception('Natives are not handled yet')
|
||||
|
||||
name = library.name
|
||||
if library.mmcHint == 'forge-pack-xz':
|
||||
if library.pmcHint == 'forge-pack-xz':
|
||||
kind = DownloadType.FORGE_XZ
|
||||
name.extension = 'jar.pack.xz'
|
||||
else:
|
||||
@ -86,16 +87,16 @@ def GetLibraryDownload (library : MultiMCLibrary):
|
||||
|
||||
return DownloadEntry(url, kind, name)
|
||||
|
||||
with open('multimc/net.minecraftforge/index.json', 'r', encoding='utf-8') as forgeIndex:
|
||||
forgeVersions = MultiMCVersionIndex(json.load(forgeIndex))
|
||||
with open(PMC_DIR + '/net.minecraftforge/index.json', 'r', encoding='utf-8') as forgeIndex:
|
||||
forgeVersions = PolyMCVersionIndex(json.load(forgeIndex))
|
||||
|
||||
urlSet = set()
|
||||
|
||||
for entry in forgeVersions.versions:
|
||||
versionString = entry.version
|
||||
versionPath = "multimc/net.minecraftforge/%s.json" % versionString
|
||||
versionPath = PMC_DIR + "/net.minecraftforge/%s.json" % versionString
|
||||
with open(versionPath, 'r') as infile:
|
||||
forgeVersion = MultiMCVersionFile(json.load(infile))
|
||||
forgeVersion = PolyMCVersionFile(json.load(infile))
|
||||
if forgeVersion.libraries:
|
||||
for entry in forgeVersion.libraries:
|
||||
urlSet.add(GetLibraryDownload(entry))
|
||||
|
@ -1,5 +1,6 @@
|
||||
from metautil import *
|
||||
import jsonobject
|
||||
from metautil import *
|
||||
|
||||
|
||||
class FabricInstallerArguments(JsonObject):
|
||||
client = ListProperty(StringProperty)
|
||||
@ -10,9 +11,9 @@ class FabricInstallerLaunchwrapper(JsonObject):
|
||||
tweakers = ObjectProperty(FabricInstallerArguments, required=True)
|
||||
|
||||
class FabricInstallerLibraries(JsonObject):
|
||||
client = ListProperty(MultiMCLibrary)
|
||||
common = ListProperty(MultiMCLibrary)
|
||||
server = ListProperty(MultiMCLibrary)
|
||||
client = ListProperty(PolyMCLibrary)
|
||||
common = ListProperty(PolyMCLibrary)
|
||||
server = ListProperty(PolyMCLibrary)
|
||||
|
||||
class FabricInstallerDataV1(JsonObject):
|
||||
version = IntegerProperty(required=True)
|
||||
|
@ -1,6 +1,8 @@
|
||||
from metautil import *
|
||||
from collections import namedtuple
|
||||
|
||||
from metautil import *
|
||||
|
||||
|
||||
# A post-processed entry constructed from the reconstructed Forge version index
|
||||
class ForgeVersion:
|
||||
def __init__(self, entry):
|
||||
@ -103,7 +105,7 @@ class DerivedForgeIndex(JsonObject):
|
||||
|
||||
'''
|
||||
FML library mappings - these are added to legacy Forge versions because Forge no longer can download these
|
||||
by itself - the locations have changed and some of this has to be rehosted on MultiMC servers.
|
||||
by itself - the locations have changed and some of this has to be rehosted on PolyMC servers.
|
||||
'''
|
||||
|
||||
FMLLib = namedtuple('FMLLib', ('filename', 'checksum', 'ours'))
|
||||
|
@ -1,9 +1,13 @@
|
||||
#!/usr/bin/python3
|
||||
from fabricutil import *
|
||||
from jsonobject import *
|
||||
import copy
|
||||
import os
|
||||
from datetime import datetime
|
||||
from pprint import pprint
|
||||
import os, copy
|
||||
|
||||
from fabricutil import *
|
||||
from jsonobject import *
|
||||
|
||||
PMC_DIR = os.environ["PMC_DIR"]
|
||||
UPSTREAM_DIR = os.environ["UPSTREAM_DIR"]
|
||||
|
||||
# turn loader versions into packages
|
||||
loaderRecommended = []
|
||||
@ -15,11 +19,11 @@ def mkdirs(path):
|
||||
if not os.path.exists(path):
|
||||
os.makedirs(path)
|
||||
|
||||
mkdirs("multimc/net.fabricmc.fabric-loader")
|
||||
mkdirs("multimc/net.fabricmc.intermediary")
|
||||
mkdirs(PMC_DIR + "/net.fabricmc.fabric-loader")
|
||||
mkdirs(PMC_DIR + "/net.fabricmc.intermediary")
|
||||
|
||||
def loadJarInfo(mavenKey):
|
||||
with open("upstream/fabric/jars/" + mavenKey.replace(":", ".") + ".json", 'r', encoding='utf-8') as jarInfoFile:
|
||||
with open(UPSTREAM_DIR + "/fabric/jars/" + mavenKey.replace(":", ".") + ".json", 'r', encoding='utf-8') as jarInfoFile:
|
||||
return FabricJarInfo(json.load(jarInfoFile))
|
||||
|
||||
def processLoaderVersion(loaderVersion, it, loaderData):
|
||||
@ -27,7 +31,7 @@ def processLoaderVersion(loaderVersion, it, loaderData):
|
||||
if (len(loaderRecommended) < 1) and verStable:
|
||||
loaderRecommended.append(loaderVersion)
|
||||
versionJarInfo = loadJarInfo(it["maven"])
|
||||
version = MultiMCVersionFile(name="Fabric Loader", uid="net.fabricmc.fabric-loader", version=loaderVersion)
|
||||
version = PolyMCVersionFile(name="Fabric Loader", uid="net.fabricmc.fabric-loader", version=loaderVersion)
|
||||
version.releaseTime = versionJarInfo.releaseTime
|
||||
version.requires = [DependencyEntry(uid='net.fabricmc.intermediary')]
|
||||
version.order = 10
|
||||
@ -39,44 +43,44 @@ def processLoaderVersion(loaderVersion, it, loaderData):
|
||||
version.libraries = []
|
||||
version.libraries.extend(loaderData.libraries.common)
|
||||
version.libraries.extend(loaderData.libraries.client)
|
||||
loaderLib = MultiMCLibrary(name=GradleSpecifier(it["maven"]), url="https://maven.fabricmc.net")
|
||||
loaderLib = PolyMCLibrary(name=GradleSpecifier(it["maven"]), url="https://maven.fabricmc.net")
|
||||
version.libraries.append(loaderLib)
|
||||
loaderVersions.append(version)
|
||||
|
||||
def processIntermediaryVersion(it):
|
||||
intermediaryRecommended.append(it["version"])
|
||||
versionJarInfo = loadJarInfo(it["maven"])
|
||||
version = MultiMCVersionFile(name="Intermediary Mappings", uid="net.fabricmc.intermediary", version=it["version"])
|
||||
version = PolyMCVersionFile(name="Intermediary Mappings", uid="net.fabricmc.intermediary", version=it["version"])
|
||||
version.releaseTime = versionJarInfo.releaseTime
|
||||
version.requires = [DependencyEntry(uid='net.minecraft', equals=it["version"])]
|
||||
version.order = 11
|
||||
version.type = "release"
|
||||
version.libraries = []
|
||||
version.volatile = True
|
||||
mappingLib = MultiMCLibrary(name=GradleSpecifier(it["maven"]), url="https://maven.fabricmc.net")
|
||||
mappingLib = PolyMCLibrary(name=GradleSpecifier(it["maven"]), url="https://maven.fabricmc.net")
|
||||
version.libraries.append(mappingLib)
|
||||
intermediaryVersions.append(version)
|
||||
|
||||
with open("upstream/fabric/meta-v2/loader.json", 'r', encoding='utf-8') as loaderVersionIndexFile:
|
||||
with open(UPSTREAM_DIR + "/fabric/meta-v2/loader.json", 'r', encoding='utf-8') as loaderVersionIndexFile:
|
||||
loaderVersionIndex = json.load(loaderVersionIndexFile)
|
||||
for it in loaderVersionIndex:
|
||||
version = it["version"]
|
||||
with open("upstream/fabric/loader-installer-json/" + version + ".json", 'r', encoding='utf-8') as loaderVersionFile:
|
||||
with open(UPSTREAM_DIR + "/fabric/loader-installer-json/" + version + ".json", 'r', encoding='utf-8') as loaderVersionFile:
|
||||
ldata = json.load(loaderVersionFile)
|
||||
ldata = FabricInstallerDataV1(ldata)
|
||||
processLoaderVersion(version, it, ldata)
|
||||
|
||||
with open("upstream/fabric/meta-v2/intermediary.json", 'r', encoding='utf-8') as intermediaryVersionIndexFile:
|
||||
with open(UPSTREAM_DIR + "/fabric/meta-v2/intermediary.json", 'r', encoding='utf-8') as intermediaryVersionIndexFile:
|
||||
intermediaryVersionIndex = json.load(intermediaryVersionIndexFile)
|
||||
for it in intermediaryVersionIndex:
|
||||
processIntermediaryVersion(it)
|
||||
|
||||
for version in loaderVersions:
|
||||
outFilepath = "multimc/net.fabricmc.fabric-loader/%s.json" % version.version
|
||||
outFilepath = PMC_DIR + "/net.fabricmc.fabric-loader/%s.json" % version.version
|
||||
with open(outFilepath, 'w') as outfile:
|
||||
json.dump(version.to_json(), outfile, sort_keys=True, indent=4)
|
||||
|
||||
sharedData = MultiMCSharedPackageData(uid = 'net.fabricmc.fabric-loader', name = 'Fabric Loader')
|
||||
sharedData = PolyMCSharedPackageData(uid = 'net.fabricmc.fabric-loader', name = 'Fabric Loader')
|
||||
sharedData.recommended = loaderRecommended
|
||||
sharedData.description = "Fabric Loader is a tool to load Fabric-compatible mods in game environments."
|
||||
sharedData.projectUrl = "https://fabricmc.net"
|
||||
@ -84,11 +88,11 @@ sharedData.authors = ["Fabric Developers"]
|
||||
sharedData.write()
|
||||
|
||||
for version in intermediaryVersions:
|
||||
outFilepath = "multimc/net.fabricmc.intermediary/%s.json" % version.version
|
||||
outFilepath = PMC_DIR + "/net.fabricmc.intermediary/%s.json" % version.version
|
||||
with open(outFilepath, 'w') as outfile:
|
||||
json.dump(version.to_json(), outfile, sort_keys=True, indent=4)
|
||||
|
||||
sharedData = MultiMCSharedPackageData(uid = 'net.fabricmc.intermediary', name = 'Intermediary Mappings')
|
||||
sharedData = PolyMCSharedPackageData(uid = 'net.fabricmc.intermediary', name = 'Intermediary Mappings')
|
||||
sharedData.recommended = intermediaryRecommended
|
||||
sharedData.description = "Intermediary mappings allow using Fabric Loader with mods for Minecraft in a more compatible manner."
|
||||
sharedData.projectUrl = "https://fabricmc.net"
|
||||
|
148
generateForge.py
148
generateForge.py
@ -1,12 +1,14 @@
|
||||
#!/usr/bin/python3
|
||||
from __future__ import print_function
|
||||
import sys
|
||||
import os
|
||||
import re
|
||||
from metautil import *
|
||||
import sys
|
||||
from distutils.version import LooseVersion
|
||||
|
||||
from forgeutil import *
|
||||
from jsonobject import *
|
||||
from distutils.version import LooseVersion
|
||||
from metautil import *
|
||||
|
||||
PMC_DIR = os.environ["PMC_DIR"]
|
||||
UPSTREAM_DIR = os.environ["UPSTREAM_DIR"]
|
||||
|
||||
def eprint(*args, **kwargs):
|
||||
print(*args, file=sys.stderr, **kwargs)
|
||||
@ -17,8 +19,8 @@ def loadMcVersionFilter(version):
|
||||
if version in mcVersionCache:
|
||||
return mcVersionCache[version]
|
||||
libSet = set()
|
||||
with open("multimc/net.minecraft/%s.json" % version, 'r', encoding='utf-8') as mcFile:
|
||||
mcVersion = MultiMCVersionFile(json.load(mcFile))
|
||||
with open(PMC_DIR + "/net.minecraft/%s.json" % version, 'r', encoding='utf-8') as mcFile:
|
||||
mcVersion = PolyMCVersionFile(json.load(mcFile))
|
||||
for lib in mcVersion.libraries:
|
||||
libSet.add(lib.name)
|
||||
mcVersionCache[version] = libSet
|
||||
@ -46,7 +48,7 @@ def shouldIgnoreArtifact(libSet, match):
|
||||
return False
|
||||
|
||||
def versionFromProfile(profile, version):
|
||||
result = MultiMCVersionFile({"name":"Forge", "version":version.rawVersion, "uid":"net.minecraftforge" })
|
||||
result = PolyMCVersionFile({"name":"Forge", "version":version.rawVersion, "uid":"net.minecraftforge" })
|
||||
mcversion = profile.install.minecraft
|
||||
result.requires = [DependencyEntry(uid='net.minecraft', equals=mcversion)]
|
||||
result.mainClass = profile.versionInfo.mainClass
|
||||
@ -80,13 +82,13 @@ def versionFromProfile(profile, version):
|
||||
fixedName.version = "%s-%s" % (mcversion, fixedName.version)
|
||||
elif fixedName.artifact == "forge":
|
||||
fixedName.classifier = "universal"
|
||||
ourLib = MultiMCLibrary(name=fixedName)
|
||||
ourLib = PolyMCLibrary(name=fixedName)
|
||||
if forgeLib.url == "http://files.minecraftforge.net/maven/":
|
||||
ourLib.url = "https://maven.minecraftforge.net/"
|
||||
else:
|
||||
ourLib.url = forgeLib.url
|
||||
#if forgeLib.checksums and len(forgeLib.checksums) == 2:
|
||||
# ourLib.mmcHint = "forge-pack-xz"
|
||||
# ourLib.pmcHint = "forge-pack-xz"
|
||||
libs.append(ourLib)
|
||||
result.libraries = libs
|
||||
result.order = 5
|
||||
@ -94,7 +96,7 @@ def versionFromProfile(profile, version):
|
||||
|
||||
def versionFromModernizedInstaller(installerVersion : MojangVersionFile, version: ForgeVersion):
|
||||
eprint("Generating Modernized Forge %s." % version.longVersion)
|
||||
result = MultiMCVersionFile({"name":"Forge", "version":version.rawVersion, "uid":"net.minecraftforge" })
|
||||
result = PolyMCVersionFile({"name":"Forge", "version":version.rawVersion, "uid":"net.minecraftforge" })
|
||||
mcversion = version.mcversion
|
||||
result.requires = [DependencyEntry(uid='net.minecraft', equals=mcversion)]
|
||||
result.mainClass = installerVersion.mainClass
|
||||
@ -114,40 +116,40 @@ def versionFromModernizedInstaller(installerVersion : MojangVersionFile, version
|
||||
libs = []
|
||||
mcFilter = loadMcVersionFilter(mcversion)
|
||||
for upstreamLib in installerVersion.libraries:
|
||||
mmcLib = MultiMCLibrary(upstreamLib.to_json())
|
||||
if mmcLib.name.isLwjgl():
|
||||
pmcLib = PolyMCLibrary(upstreamLib.to_json())
|
||||
if pmcLib.name.isLwjgl():
|
||||
continue
|
||||
if mmcLib.name.isLog4j():
|
||||
if pmcLib.name.isLog4j():
|
||||
continue
|
||||
if shouldIgnoreArtifact(mcFilter, mmcLib.name):
|
||||
if shouldIgnoreArtifact(mcFilter, pmcLib.name):
|
||||
continue
|
||||
if mmcLib.name.group == "net.minecraftforge":
|
||||
if mmcLib.name.artifact == "forge":
|
||||
fixedName = mmcLib.name
|
||||
if pmcLib.name.group == "net.minecraftforge":
|
||||
if pmcLib.name.artifact == "forge":
|
||||
fixedName = pmcLib.name
|
||||
fixedName.classifier = "universal"
|
||||
mmcLib.downloads.artifact.path = fixedName.getPath()
|
||||
mmcLib.downloads.artifact.url = "https://files.minecraftforge.net/maven/%s" % fixedName.getPath()
|
||||
mmcLib.name = fixedName
|
||||
libs.append(mmcLib)
|
||||
pmcLib.downloads.artifact.path = fixedName.getPath()
|
||||
pmcLib.downloads.artifact.url = "https://files.minecraftforge.net/maven/%s" % fixedName.getPath()
|
||||
pmcLib.name = fixedName
|
||||
libs.append(pmcLib)
|
||||
continue
|
||||
elif mmcLib.name.artifact == "minecraftforge":
|
||||
fixedName = mmcLib.name
|
||||
elif pmcLib.name.artifact == "minecraftforge":
|
||||
fixedName = pmcLib.name
|
||||
fixedName.artifact = "forge"
|
||||
fixedName.classifier = "universal"
|
||||
fixedName.version = "%s-%s" % (mcversion, fixedName.version)
|
||||
mmcLib.downloads.artifact.path = fixedName.getPath()
|
||||
mmcLib.downloads.artifact.url = "https://files.minecraftforge.net/maven/%s" % fixedName.getPath()
|
||||
mmcLib.name = fixedName
|
||||
libs.append(mmcLib)
|
||||
pmcLib.downloads.artifact.path = fixedName.getPath()
|
||||
pmcLib.downloads.artifact.url = "https://files.minecraftforge.net/maven/%s" % fixedName.getPath()
|
||||
pmcLib.name = fixedName
|
||||
libs.append(pmcLib)
|
||||
continue
|
||||
libs.append(mmcLib)
|
||||
libs.append(pmcLib)
|
||||
|
||||
result.libraries = libs
|
||||
result.order = 5
|
||||
return result
|
||||
|
||||
def versionFromLegacy(version, legacyinfo : ForgeLegacyInfo):
|
||||
result = MultiMCVersionFile({"name":"Forge", "version":version.rawVersion, "uid":"net.minecraftforge" })
|
||||
result = PolyMCVersionFile({"name":"Forge", "version":version.rawVersion, "uid":"net.minecraftforge" })
|
||||
mcversion = version.mcversion_sane
|
||||
result.requires = [DependencyEntry(uid='net.minecraft', equals=mcversion)]
|
||||
result.releaseTime = legacyinfo.releaseTime
|
||||
@ -161,7 +163,7 @@ def versionFromLegacy(version, legacyinfo : ForgeLegacyInfo):
|
||||
else:
|
||||
classifier = "client"
|
||||
coord = GradleSpecifier("net.minecraftforge:forge:%s:%s" % (version.longVersion,classifier))
|
||||
mainmod = MultiMCLibrary(name = coord)
|
||||
mainmod = PolyMCLibrary(name = coord)
|
||||
mainmod.downloads = MojangLibraryDownloads()
|
||||
mainmod.downloads.artifact = MojangArtifact()
|
||||
mainmod.downloads.artifact.path = None
|
||||
@ -173,7 +175,7 @@ def versionFromLegacy(version, legacyinfo : ForgeLegacyInfo):
|
||||
|
||||
def versionFromBuildSystemInstaller(installerVersion : MojangVersionFile, installerProfile: ForgeInstallerProfileV2, version: ForgeVersion):
|
||||
eprint("Generating Forge %s." % version.longVersion)
|
||||
result = MultiMCVersionFile({"name":"Forge", "version":version.rawVersion, "uid":"net.minecraftforge" })
|
||||
result = PolyMCVersionFile({"name":"Forge", "version":version.rawVersion, "uid":"net.minecraftforge" })
|
||||
result.requires = [DependencyEntry(uid='net.minecraft', equals=version.mcversion_sane)]
|
||||
result.mainClass = "io.github.zekerzhayard.forgewrapper.installer.Main"
|
||||
|
||||
@ -181,9 +183,9 @@ def versionFromBuildSystemInstaller(installerVersion : MojangVersionFile, instal
|
||||
mavenLibs = []
|
||||
|
||||
# load the locally cached installer file info and use it to add the installer entry in the json
|
||||
with open("upstream/forge/installer_info/%s.json" % version.longVersion, 'r', encoding='utf-8') as f:
|
||||
with open(UPSTREAM_DIR + "/forge/installer_info/%s.json" % version.longVersion, 'r', encoding='utf-8') as f:
|
||||
installerInfo = InstallerInfo(json.load(f))
|
||||
InstallerLib = MultiMCLibrary(name=GradleSpecifier("net.minecraftforge:forge:%s:installer" % (version.longVersion)))
|
||||
InstallerLib = PolyMCLibrary(name=GradleSpecifier("net.minecraftforge:forge:%s:installer" % (version.longVersion)))
|
||||
InstallerLib.downloads = MojangLibraryDownloads()
|
||||
InstallerLib.downloads.artifact = MojangArtifact()
|
||||
InstallerLib.downloads.artifact.url = "https://files.minecraftforge.net/maven/%s" % (InstallerLib.name.getPath())
|
||||
@ -192,77 +194,77 @@ def versionFromBuildSystemInstaller(installerVersion : MojangVersionFile, instal
|
||||
mavenLibs.append(InstallerLib)
|
||||
|
||||
for upstreamLib in installerProfile.libraries:
|
||||
mmcLib = MultiMCLibrary(upstreamLib.to_json())
|
||||
if mmcLib.name.group == "net.minecraftforge":
|
||||
if mmcLib.name.artifact == "forge":
|
||||
if mmcLib.name.classifier == "universal":
|
||||
mmcLib.downloads.artifact.url = "https://files.minecraftforge.net/maven/%s" % mmcLib.name.getPath()
|
||||
mavenLibs.append(mmcLib)
|
||||
pmcLib = PolyMCLibrary(upstreamLib.to_json())
|
||||
if pmcLib.name.group == "net.minecraftforge":
|
||||
if pmcLib.name.artifact == "forge":
|
||||
if pmcLib.name.classifier == "universal":
|
||||
pmcLib.downloads.artifact.url = "https://files.minecraftforge.net/maven/%s" % pmcLib.name.getPath()
|
||||
mavenLibs.append(pmcLib)
|
||||
continue
|
||||
if mmcLib.name.isLog4j():
|
||||
if pmcLib.name.isLog4j():
|
||||
continue
|
||||
mavenLibs.append(mmcLib)
|
||||
mavenLibs.append(pmcLib)
|
||||
|
||||
result.mavenFiles = mavenLibs
|
||||
|
||||
libraries = []
|
||||
#wrapperLib = MultiMCLibrary(name=GradleSpecifier("io.github.zekerzhayard:ForgeWrapper:1.4.1"))
|
||||
#wrapperLib = PolyMCLibrary(name=GradleSpecifier("io.github.zekerzhayard:ForgeWrapper:1.4.1"))
|
||||
#wrapperLib.downloads = MojangLibraryDownloads()
|
||||
#wrapperLib.downloads.artifact = MojangArtifact()
|
||||
#wrapperLib.downloads.artifact.url = "https://files.multimc.org/maven/%s" % (wrapperLib.name.getPath())
|
||||
#wrapperLib.downloads.artifact.url = "https://meta.polymc.org/maven/%s" % (wrapperLib.name.getPath())
|
||||
#wrapperLib.downloads.artifact.sha1 = "82f01de97e29ba34be9fc628084b6d10ce2235c5"
|
||||
#wrapperLib.downloads.artifact.size = 14351
|
||||
#libraries.append(wrapperLib)
|
||||
|
||||
#wrapperLib = MultiMCLibrary(name=GradleSpecifier("io.github.zekerzhayard:ForgeWrapper:1.4.2"))
|
||||
#wrapperLib = PolyMCLibrary(name=GradleSpecifier("io.github.zekerzhayard:ForgeWrapper:1.4.2"))
|
||||
#wrapperLib.downloads = MojangLibraryDownloads()
|
||||
#wrapperLib.downloads.artifact = MojangArtifact()
|
||||
#wrapperLib.downloads.artifact.url = "https://files.multimc.org/maven/%s" % (wrapperLib.name.getPath())
|
||||
#wrapperLib.downloads.artifact.url = "https://meta.polymc.org/maven/%s" % (wrapperLib.name.getPath())
|
||||
#wrapperLib.downloads.artifact.sha1 = "79ff9c1530e8743450c5c3ebc6e07b535437aa6e"
|
||||
#wrapperLib.downloads.artifact.size = 22346
|
||||
#libraries.append(wrapperLib)
|
||||
|
||||
#wrapperLib = MultiMCLibrary(name=GradleSpecifier("io.github.zekerzhayard:ForgeWrapper:1.5.1"))
|
||||
#wrapperLib = PolyMCLibrary(name=GradleSpecifier("io.github.zekerzhayard:ForgeWrapper:1.5.1"))
|
||||
#wrapperLib.downloads = MojangLibraryDownloads()
|
||||
#wrapperLib.downloads.artifact = MojangArtifact()
|
||||
#wrapperLib.downloads.artifact.url = "https://files.multimc.org/maven/%s" % (wrapperLib.name.getPath())
|
||||
#wrapperLib.downloads.artifact.url = "https://meta.polymc.org/maven/%s" % (wrapperLib.name.getPath())
|
||||
#wrapperLib.downloads.artifact.sha1 = "90104e9aaa8fbedf6c3d1f6d0b90cabce080b5a9"
|
||||
#wrapperLib.downloads.artifact.size = 29892
|
||||
#libraries.append(wrapperLib)
|
||||
|
||||
#wrapperLib = MultiMCLibrary(name=GradleSpecifier("io.github.zekerzhayard:ForgeWrapper:1.5.3"))
|
||||
#wrapperLib = PolyMCLibrary(name=GradleSpecifier("io.github.zekerzhayard:ForgeWrapper:1.5.3"))
|
||||
#wrapperLib.downloads = MojangLibraryDownloads()
|
||||
#wrapperLib.downloads.artifact = MojangArtifact()
|
||||
#wrapperLib.downloads.artifact.url = "https://files.multimc.org/maven/%s" % (wrapperLib.name.getPath())
|
||||
#wrapperLib.downloads.artifact.url = "https://meta.polymc.org/maven/%s" % (wrapperLib.name.getPath())
|
||||
#wrapperLib.downloads.artifact.sha1 = "2b0e06937349a209dbb90dca6381258daa456ad7"
|
||||
#wrapperLib.downloads.artifact.size = 30486
|
||||
#libraries.append(wrapperLib)
|
||||
|
||||
#wrapperLib = MultiMCLibrary(name=GradleSpecifier("io.github.zekerzhayard:ForgeWrapper:1.5.4"))
|
||||
#wrapperLib = PolyMCLibrary(name=GradleSpecifier("io.github.zekerzhayard:ForgeWrapper:1.5.4"))
|
||||
#wrapperLib.downloads = MojangLibraryDownloads()
|
||||
#wrapperLib.downloads.artifact = MojangArtifact()
|
||||
#wrapperLib.downloads.artifact.url = "https://files.multimc.org/maven/%s" % (wrapperLib.name.getPath())
|
||||
#wrapperLib.downloads.artifact.url = "https://meta.polymc.org/maven/%s" % (wrapperLib.name.getPath())
|
||||
#wrapperLib.downloads.artifact.sha1 = "e97805af76d4c1cebb753132eadbabd92e67a17b"
|
||||
#wrapperLib.downloads.artifact.size = 34299
|
||||
#libraries.append(wrapperLib)
|
||||
|
||||
#wrapperLib = MultiMCLibrary(name=GradleSpecifier("io.github.zekerzhayard:ForgeWrapper:mmc1"))
|
||||
#wrapperLib = PolyMCLibrary(name=GradleSpecifier("io.github.zekerzhayard:ForgeWrapper:pmc1"))
|
||||
#wrapperLib.downloads = MojangLibraryDownloads()
|
||||
#wrapperLib.downloads.artifact = MojangArtifact()
|
||||
#wrapperLib.downloads.artifact.url = "https://files.multimc.org/maven/%s" % (wrapperLib.name.getPath())
|
||||
#wrapperLib.downloads.artifact.url = "https://meta.polymc.org/maven/%s" % (wrapperLib.name.getPath())
|
||||
#wrapperLib.downloads.artifact.sha1 = "e8e0fe708742ecf15ab4af55ae8227fa4349362d"
|
||||
#wrapperLib.downloads.artifact.size = 34628
|
||||
#libraries.append(wrapperLib)
|
||||
|
||||
#wrapperLib = MultiMCLibrary(name=GradleSpecifier("io.github.zekerzhayard:ForgeWrapper:1.5.5"))
|
||||
#wrapperLib = PolyMCLibrary(name=GradleSpecifier("io.github.zekerzhayard:ForgeWrapper:1.5.5"))
|
||||
#wrapperLib.downloads = MojangLibraryDownloads()
|
||||
#wrapperLib.downloads.artifact = MojangArtifact()
|
||||
#wrapperLib.downloads.artifact.url = "https://files.multimc.org/maven/%s" % (wrapperLib.name.getPath())
|
||||
#wrapperLib.downloads.artifact.url = "https://meta.polymc.org/maven/%s" % (wrapperLib.name.getPath())
|
||||
#wrapperLib.downloads.artifact.sha1 = "566dfd60aacffaa02884614835f1151d36f1f985"
|
||||
#wrapperLib.downloads.artifact.size = 34331
|
||||
#libraries.append(wrapperLib)
|
||||
|
||||
wrapperLib = MultiMCLibrary(name=GradleSpecifier("io.github.zekerzhayard:ForgeWrapper:mmc2"))
|
||||
wrapperLib = PolyMCLibrary(name=GradleSpecifier("io.github.zekerzhayard:ForgeWrapper:pmc2"))
|
||||
wrapperLib.downloads = MojangLibraryDownloads()
|
||||
wrapperLib.downloads.artifact = MojangArtifact()
|
||||
wrapperLib.downloads.artifact.url = "https://meta.polymc.org/maven/%s" % (wrapperLib.name.getPath())
|
||||
@ -271,19 +273,19 @@ def versionFromBuildSystemInstaller(installerVersion : MojangVersionFile, instal
|
||||
libraries.append(wrapperLib)
|
||||
|
||||
for upstreamLib in installerVersion.libraries:
|
||||
mmcLib = MultiMCLibrary(upstreamLib.to_json())
|
||||
if mmcLib.name.group == "net.minecraftforge":
|
||||
if mmcLib.name.artifact == "forge":
|
||||
fixedName = mmcLib.name
|
||||
pmcLib = PolyMCLibrary(upstreamLib.to_json())
|
||||
if pmcLib.name.group == "net.minecraftforge":
|
||||
if pmcLib.name.artifact == "forge":
|
||||
fixedName = pmcLib.name
|
||||
fixedName.classifier = "launcher"
|
||||
mmcLib.downloads.artifact.path = fixedName.getPath()
|
||||
mmcLib.downloads.artifact.url = "https://files.minecraftforge.net/maven/%s" % fixedName.getPath()
|
||||
mmcLib.name = fixedName
|
||||
libraries.append(mmcLib)
|
||||
pmcLib.downloads.artifact.path = fixedName.getPath()
|
||||
pmcLib.downloads.artifact.url = "https://files.minecraftforge.net/maven/%s" % fixedName.getPath()
|
||||
pmcLib.name = fixedName
|
||||
libraries.append(pmcLib)
|
||||
continue
|
||||
if mmcLib.name.isLog4j():
|
||||
if pmcLib.name.isLog4j():
|
||||
continue
|
||||
libraries.append(mmcLib)
|
||||
libraries.append(pmcLib)
|
||||
result.libraries = libraries
|
||||
|
||||
result.releaseTime = installerVersion.releaseTime
|
||||
@ -296,7 +298,7 @@ def versionFromBuildSystemInstaller(installerVersion : MojangVersionFile, instal
|
||||
|
||||
|
||||
# load the locally cached version list
|
||||
with open("upstream/forge/derived_index.json", 'r', encoding='utf-8') as f:
|
||||
with open(UPSTREAM_DIR + "/forge/derived_index.json", 'r', encoding='utf-8') as f:
|
||||
main_json = json.load(f)
|
||||
remoteVersionlist = DerivedForgeIndex(main_json)
|
||||
|
||||
@ -374,15 +376,15 @@ for id, entry in remoteVersionlist.versions.items():
|
||||
recommendedVersions.append(version.rawVersion)
|
||||
|
||||
# If we do not have the corresponding Minecraft version, we ignore it
|
||||
if not os.path.isfile("multimc/net.minecraft/%s.json" % version.mcversion_sane):
|
||||
if not os.path.isfile(PMC_DIR + "/net.minecraft/%s.json" % version.mcversion_sane):
|
||||
eprint ("Skipping %s with no corresponding Minecraft version %s" % (id, version.mcversion_sane))
|
||||
continue
|
||||
|
||||
outVersion = None
|
||||
|
||||
# Path for new-style build system based installers
|
||||
installerVersionFilepath = "upstream/forge/version_manifests/%s.json" % version.longVersion
|
||||
profileFilepath = "upstream/forge/installer_manifests/%s.json" % version.longVersion
|
||||
installerVersionFilepath = UPSTREAM_DIR + "/forge/version_manifests/%s.json" % version.longVersion
|
||||
profileFilepath = UPSTREAM_DIR + "/forge/installer_manifests/%s.json" % version.longVersion
|
||||
|
||||
eprint(installerVersionFilepath)
|
||||
if os.path.isfile(installerVersionFilepath):
|
||||
@ -415,7 +417,7 @@ for id, entry in remoteVersionlist.versions.items():
|
||||
|
||||
outVersion = versionFromLegacy(version, legacyinfolist.number[build])
|
||||
|
||||
outFilepath = "multimc/net.minecraftforge/%s.json" % outVersion.version
|
||||
outFilepath = PMC_DIR + "/net.minecraftforge/%s.json" % outVersion.version
|
||||
with open(outFilepath, 'w') as outfile:
|
||||
json.dump(outVersion.to_json(), outfile, sort_keys=True, indent=4)
|
||||
|
||||
@ -423,7 +425,7 @@ recommendedVersions.sort()
|
||||
|
||||
print ('Recommended versions:', recommendedVersions)
|
||||
|
||||
sharedData = MultiMCSharedPackageData(uid = 'net.minecraftforge', name = "Forge")
|
||||
sharedData = PolyMCSharedPackageData(uid = 'net.minecraftforge', name = "Forge")
|
||||
sharedData.projectUrl = 'https://www.minecraftforge.net/forum/'
|
||||
sharedData.recommended = recommendedVersions
|
||||
sharedData.write()
|
||||
|
@ -1,13 +1,17 @@
|
||||
#!/usr/bin/python3
|
||||
from liteloaderutil import *
|
||||
from jsonobject import *
|
||||
import copy
|
||||
import os
|
||||
from datetime import datetime
|
||||
from pprint import pprint
|
||||
import copy
|
||||
|
||||
from jsonobject import *
|
||||
from liteloaderutil import *
|
||||
|
||||
PMC_DIR = os.environ["PMC_DIR"]
|
||||
UPSTREAM_DIR = os.environ["UPSTREAM_DIR"]
|
||||
|
||||
# load the locally cached version list
|
||||
def loadLiteloaderJson():
|
||||
with open("upstream/liteloader/versions.json", 'r', encoding='utf-8') as f:
|
||||
with open(UPSTREAM_DIR + "/liteloader/versions.json", 'r', encoding='utf-8') as f:
|
||||
return LiteloaderIndex(json.load(f))
|
||||
|
||||
remoteVersionlist = loadLiteloaderJson()
|
||||
@ -21,7 +25,7 @@ def processArtefacts(mcVersion, liteloader, notSnapshots):
|
||||
if id == 'latest':
|
||||
latestVersion = artefact.version
|
||||
continue
|
||||
version = MultiMCVersionFile(name="LiteLoader", uid="com.mumfrey.liteloader", version=artefact.version)
|
||||
version = PolyMCVersionFile(name="LiteLoader", uid="com.mumfrey.liteloader", version=artefact.version)
|
||||
version.requires = [DependencyEntry(uid='net.minecraft', equals=mcVersion)]
|
||||
version.releaseTime = datetime.utcfromtimestamp(int(artefact.timestamp))
|
||||
version.addTweakers = [artefact.tweakClass]
|
||||
@ -39,12 +43,12 @@ def processArtefacts(mcVersion, liteloader, notSnapshots):
|
||||
lib.url = "https://repo.maven.apache.org/maven2/"
|
||||
if lib.name == GradleSpecifier("org.ow2.asm:asm-all:5.2"):
|
||||
lib.url = "http://repo.liteloader.com/"
|
||||
liteloaderLib = MultiMCLibrary(
|
||||
liteloaderLib = PolyMCLibrary(
|
||||
name=GradleSpecifier("com.mumfrey:liteloader:%s" % version.version),
|
||||
url = "http://dl.liteloader.com/versions/"
|
||||
)
|
||||
if not notSnapshots:
|
||||
liteloaderLib.mmcHint = "always-stale"
|
||||
liteloaderLib.pmcHint = "always-stale"
|
||||
libraries.append(liteloaderLib)
|
||||
version.libraries = libraries
|
||||
versions.append(version)
|
||||
@ -76,11 +80,11 @@ recommended.sort()
|
||||
allVersions.sort(key=lambda x: x.releaseTime, reverse=True)
|
||||
|
||||
for version in allVersions:
|
||||
outFilepath = "multimc/com.mumfrey.liteloader/%s.json" % version.version
|
||||
outFilepath = PMC_DIR + "/com.mumfrey.liteloader/%s.json" % version.version
|
||||
with open(outFilepath, 'w') as outfile:
|
||||
json.dump(version.to_json(), outfile, sort_keys=True, indent=4)
|
||||
|
||||
sharedData = MultiMCSharedPackageData(uid = 'com.mumfrey.liteloader', name = 'LiteLoader')
|
||||
sharedData = PolyMCSharedPackageData(uid = 'com.mumfrey.liteloader', name = 'LiteLoader')
|
||||
sharedData.recommended = recommended
|
||||
sharedData.description = remoteVersionlist.meta.description
|
||||
sharedData.projectUrl = remoteVersionlist.meta.url
|
||||
|
@ -1,23 +1,19 @@
|
||||
#!/usr/bin/python3
|
||||
|
||||
import os
|
||||
import json
|
||||
import copy
|
||||
import datetime
|
||||
import iso8601
|
||||
|
||||
import hashlib
|
||||
import json
|
||||
import os
|
||||
from collections import defaultdict, namedtuple
|
||||
from datetime import datetime
|
||||
from distutils import version
|
||||
from operator import itemgetter
|
||||
|
||||
from pprint import pprint
|
||||
|
||||
import iso8601
|
||||
from metautil import *
|
||||
|
||||
from distutils import version
|
||||
|
||||
from collections import defaultdict
|
||||
from collections import namedtuple
|
||||
from datetime import datetime
|
||||
import hashlib
|
||||
PMC_DIR = os.environ["PMC_DIR"]
|
||||
UPSTREAM_DIR = os.environ["UPSTREAM_DIR"]
|
||||
|
||||
def addOrGetBucket(buckets, rules):
|
||||
ruleHash = None
|
||||
@ -28,7 +24,7 @@ def addOrGetBucket(buckets, rules):
|
||||
if ruleHash in buckets:
|
||||
bucket = buckets[ruleHash]
|
||||
else:
|
||||
bucket = MultiMCVersionFile(
|
||||
bucket = PolyMCVersionFile(
|
||||
{
|
||||
"name": "LWJGL",
|
||||
"version": "undetermined",
|
||||
@ -70,10 +66,10 @@ def addLWJGLVersion(versionVariants, lwjglObject):
|
||||
versionVariants[lwjglVersion].append(LWJGLEntry(version=lwjglObjectCopy, sha1=lwjglObjectHash))
|
||||
|
||||
def removePathsFromLib(lib):
|
||||
if mmcLib.downloads.artifact:
|
||||
mmcLib.downloads.artifact.path = None
|
||||
if mmcLib.downloads.classifiers:
|
||||
for key, value in mmcLib.downloads.classifiers.items():
|
||||
if pmcLib.downloads.artifact:
|
||||
pmcLib.downloads.artifact.path = None
|
||||
if pmcLib.downloads.classifiers:
|
||||
for key, value in pmcLib.downloads.classifiers.items():
|
||||
value.path = None
|
||||
|
||||
def adaptNewStyleArguments(arguments):
|
||||
@ -118,24 +114,24 @@ with open("static/minecraft.json", 'r', encoding='utf-8') as legacyIndexFile:
|
||||
|
||||
found_any_lwjgl3 = False
|
||||
|
||||
for filename in os.listdir('upstream/mojang/versions'):
|
||||
with open("upstream/mojang/versions/" + filename) as json_file:
|
||||
for filename in os.listdir(UPSTREAM_DIR + '/mojang/versions'):
|
||||
with open(UPSTREAM_DIR + "/mojang/versions/" + filename) as json_file:
|
||||
print("Processing", filename)
|
||||
mojangVersionFile = MojangVersionFile(json.load(json_file))
|
||||
versionFile = MojangToMultiMC(mojangVersionFile, "Minecraft", "net.minecraft", mojangVersionFile.id)
|
||||
versionFile = MojangToPolyMC(mojangVersionFile, "Minecraft", "net.minecraft", mojangVersionFile.id)
|
||||
libs_minecraft = []
|
||||
is_lwjgl_3 = False
|
||||
buckets = {}
|
||||
for lib in versionFile.libraries:
|
||||
mmcLib = MultiMCLibrary(lib.to_json())
|
||||
removePathsFromLib(mmcLib)
|
||||
specifier = mmcLib.name
|
||||
pmcLib = PolyMCLibrary(lib.to_json())
|
||||
removePathsFromLib(pmcLib)
|
||||
specifier = pmcLib.name
|
||||
ruleHash = None
|
||||
if specifier.isLwjgl():
|
||||
rules = None
|
||||
if mmcLib.rules:
|
||||
rules = mmcLib.rules
|
||||
mmcLib.rules = None
|
||||
if pmcLib.rules:
|
||||
rules = pmcLib.rules
|
||||
pmcLib.rules = None
|
||||
if isOnlyMacOS(rules, specifier):
|
||||
print("Candidate library ", specifier, " is only for macOS and is therefore ignored.")
|
||||
continue
|
||||
@ -148,44 +144,44 @@ for filename in os.listdir('upstream/mojang/versions'):
|
||||
bucket.version = specifier.version
|
||||
if not bucket.libraries:
|
||||
bucket.libraries = []
|
||||
bucket.libraries.append(mmcLib)
|
||||
bucket.libraries.append(pmcLib)
|
||||
bucket.releaseTime = versionFile.releaseTime
|
||||
else:
|
||||
# FIXME: workaround for insane log4j nonsense from December 2021. Probably needs adjustment.
|
||||
if mmcLib.name.isLog4j():
|
||||
if pmcLib.name.isLog4j():
|
||||
log4jVersion = '2.16.0'
|
||||
if mmcLib.name.version == '2.0-beta9':
|
||||
if pmcLib.name.version == '2.0-beta9':
|
||||
log4jVersion = '2.0-beta9-fixed'
|
||||
|
||||
replacementLib = MultiMCLibrary(name=GradleSpecifier("org.apache.logging.log4j:%s:%s" % (mmcLib.name.artifact, log4jVersion)))
|
||||
replacementLib = PolyMCLibrary(name=GradleSpecifier("org.apache.logging.log4j:%s:%s" % (pmcLib.name.artifact, log4jVersion)))
|
||||
replacementLib.downloads = MojangLibraryDownloads()
|
||||
replacementLib.downloads.artifact = MojangArtifact()
|
||||
replacementLib.downloads.artifact.url = "https://meta.polymc.org/maven/%s" % (replacementLib.name.getPath())
|
||||
|
||||
if log4jVersion == "2.16.0":
|
||||
if mmcLib.name.artifact == "log4j-api":
|
||||
if pmcLib.name.artifact == "log4j-api":
|
||||
replacementLib.downloads.artifact.sha1 = "f821a18687126c2e2f227038f540e7953ad2cc8c"
|
||||
replacementLib.downloads.artifact.size = 301892
|
||||
elif mmcLib.name.artifact == "log4j-core":
|
||||
elif pmcLib.name.artifact == "log4j-core":
|
||||
replacementLib.downloads.artifact.sha1 = "539a445388aee52108700f26d9644989e7916e7c"
|
||||
replacementLib.downloads.artifact.size = 1789565
|
||||
elif mmcLib.name.artifact == "log4j-slf4j18-impl":
|
||||
elif pmcLib.name.artifact == "log4j-slf4j18-impl":
|
||||
replacementLib.downloads.artifact.sha1 = "0c880a059056df5725f5d8d1035276d9749eba6d"
|
||||
replacementLib.downloads.artifact.size = 21249
|
||||
else:
|
||||
raise Exception("ERROR: unhandled log4j artifact %s!" % mmcLib.name.artifact)
|
||||
raise Exception("ERROR: unhandled log4j artifact %s!" % pmcLib.name.artifact)
|
||||
elif log4jVersion == "2.0-beta9-fixed":
|
||||
if mmcLib.name.artifact == "log4j-api":
|
||||
if pmcLib.name.artifact == "log4j-api":
|
||||
replacementLib.downloads.artifact.sha1 = "b61eaf2e64d8b0277e188262a8b771bbfa1502b3"
|
||||
replacementLib.downloads.artifact.size = 107347
|
||||
elif mmcLib.name.artifact == "log4j-core":
|
||||
elif pmcLib.name.artifact == "log4j-core":
|
||||
replacementLib.downloads.artifact.sha1 = "677991ea2d7426f76309a73739cecf609679492c"
|
||||
replacementLib.downloads.artifact.size = 677588
|
||||
else:
|
||||
raise Exception("ERROR: unhandled log4j artifact %s!" % mmcLib.name.artifact)
|
||||
raise Exception("ERROR: unhandled log4j artifact %s!" % pmcLib.name.artifact)
|
||||
libs_minecraft.append(replacementLib)
|
||||
else:
|
||||
libs_minecraft.append(mmcLib)
|
||||
libs_minecraft.append(pmcLib)
|
||||
if len(buckets) == 1:
|
||||
for key in buckets:
|
||||
keyBucket = buckets[key]
|
||||
@ -246,7 +242,7 @@ for filename in os.listdir('upstream/mojang/versions'):
|
||||
# process 1.13 arguments into previous version
|
||||
if not mojangVersionFile.minecraftArguments and mojangVersionFile.arguments:
|
||||
versionFile.minecraftArguments = adaptNewStyleArguments(mojangVersionFile.arguments)
|
||||
filenameOut = "multimc/net.minecraft/%s.json" % versionFile.version
|
||||
filenameOut = PMC_DIR + "/net.minecraft/%s.json" % versionFile.version
|
||||
if versionFile.version in staticVersionlist.versions:
|
||||
ApplyLegacyOverride (versionFile, staticVersionlist.versions[versionFile.version])
|
||||
with open(filenameOut, 'w') as outfile:
|
||||
@ -256,12 +252,12 @@ def processSingleVariant(lwjglVariant):
|
||||
lwjglVersion = lwjglVariant.version
|
||||
versionObj = copy.deepcopy(lwjglVariant)
|
||||
if lwjglVersion[0] == '2':
|
||||
filename = "multimc/org.lwjgl/%s.json" % lwjglVersion
|
||||
filename = PMC_DIR + "/org.lwjgl/%s.json" % lwjglVersion
|
||||
versionObj.name = 'LWJGL 2'
|
||||
versionObj.uid = 'org.lwjgl'
|
||||
versionObj.conflicts = [DependencyEntry(uid='org.lwjgl3')]
|
||||
elif lwjglVersion[0] == '3':
|
||||
filename = "multimc/org.lwjgl3/%s.json" % lwjglVersion
|
||||
filename = PMC_DIR + "/org.lwjgl3/%s.json" % lwjglVersion
|
||||
versionObj.name = 'LWJGL 3'
|
||||
versionObj.uid = 'org.lwjgl3'
|
||||
versionObj.conflicts = [DependencyEntry(uid='org.lwjgl')]
|
||||
@ -353,18 +349,18 @@ for lwjglVersionVariant in lwjglVersionVariants:
|
||||
else:
|
||||
raise Exception("No variant decided for version %s out of %d possible ones and %d unknown ones." % (lwjglVersionVariant, passedVariants, unknownVariants))
|
||||
|
||||
lwjglSharedData = MultiMCSharedPackageData(uid = 'org.lwjgl', name = 'LWJGL 2')
|
||||
lwjglSharedData = PolyMCSharedPackageData(uid = 'org.lwjgl', name = 'LWJGL 2')
|
||||
lwjglSharedData.recommended = ['2.9.4-nightly-20150209']
|
||||
lwjglSharedData.write()
|
||||
|
||||
if found_any_lwjgl3:
|
||||
lwjglSharedData = MultiMCSharedPackageData(uid = 'org.lwjgl3', name = 'LWJGL 3')
|
||||
lwjglSharedData = PolyMCSharedPackageData(uid = 'org.lwjgl3', name = 'LWJGL 3')
|
||||
lwjglSharedData.recommended = ['3.1.2']
|
||||
lwjglSharedData.write()
|
||||
|
||||
with open("upstream/mojang/version_manifest_v2.json", 'r', encoding='utf-8') as localIndexFile:
|
||||
with open(UPSTREAM_DIR + "/mojang/version_manifest_v2.json", 'r', encoding='utf-8') as localIndexFile:
|
||||
localVersionlist = MojangIndexWrap(json.load(localIndexFile))
|
||||
|
||||
mcSharedData = MultiMCSharedPackageData(uid = 'net.minecraft', name = 'Minecraft')
|
||||
mcSharedData = PolyMCSharedPackageData(uid = 'net.minecraft', name = 'Minecraft')
|
||||
mcSharedData.recommended = [localVersionlist.latest['release']]
|
||||
mcSharedData.write()
|
||||
|
28
index.py
28
index.py
@ -1,11 +1,11 @@
|
||||
#!/usr/bin/python3
|
||||
|
||||
import hashlib
|
||||
import os
|
||||
import json
|
||||
import os
|
||||
from operator import itemgetter
|
||||
|
||||
from metautil import *
|
||||
from operator import itemgetter
|
||||
|
||||
PMC_DIR = os.environ["PMC_DIR"]
|
||||
|
||||
# take the hash type (like hashlib.md5) and filename, return hex string of hash
|
||||
def HashFile(hash, fname):
|
||||
@ -19,10 +19,10 @@ def HashFile(hash, fname):
|
||||
ignore = set(["index.json", "package.json", ".git"])
|
||||
|
||||
# initialize output structures - package list level
|
||||
packages = MultiMCPackageIndex()
|
||||
packages = PolyMCPackageIndex()
|
||||
|
||||
# walk thorugh all the package folders
|
||||
for package in sorted(os.listdir('multimc')):
|
||||
for package in sorted(os.listdir(PMC_DIR)):
|
||||
if package in ignore:
|
||||
continue
|
||||
|
||||
@ -32,24 +32,24 @@ for package in sorted(os.listdir('multimc')):
|
||||
recommendedVersions = set(sharedData.recommended)
|
||||
|
||||
# initialize output structures - version list level
|
||||
versionList = MultiMCVersionIndex()
|
||||
versionList = PolyMCVersionIndex()
|
||||
versionList.uid = package
|
||||
versionList.name = sharedData.name
|
||||
|
||||
# walk through all the versions of the package
|
||||
for filename in os.listdir("multimc/%s" % (package)):
|
||||
for filename in os.listdir(PMC_DIR + "/%s" % (package)):
|
||||
if filename in ignore:
|
||||
continue
|
||||
|
||||
# parse and hash the version file
|
||||
filepath = "multimc/%s/%s" % (package, filename)
|
||||
filepath = PMC_DIR + "/%s/%s" % (package, filename)
|
||||
filehash = HashFile(hashlib.sha256, filepath)
|
||||
versionFile = None
|
||||
with open(filepath) as json_file:
|
||||
versionFile = MultiMCVersionFile(json.load(json_file))
|
||||
versionFile = PolyMCVersionFile(json.load(json_file))
|
||||
|
||||
# pull information from the version file
|
||||
versionEntry = MultiMCVersionIndexEntry()
|
||||
versionEntry = PolyMCVersionIndexEntry()
|
||||
if versionFile.version in recommendedVersions:
|
||||
versionEntry.recommended = True
|
||||
versionEntry.version = versionFile.version
|
||||
@ -65,12 +65,12 @@ for package in sorted(os.listdir('multimc')):
|
||||
versionList.versions = sorted(versionList.versions, key=itemgetter('releaseTime'), reverse=True)
|
||||
|
||||
# write the version index for the package
|
||||
outFilePath = "multimc/%s/index.json" % (package)
|
||||
outFilePath = PMC_DIR + "/%s/index.json" % (package)
|
||||
with open(outFilePath, 'w') as outfile:
|
||||
json.dump(versionList.to_json(), outfile, sort_keys=True, indent=4)
|
||||
|
||||
# insert entry into the package index
|
||||
packageEntry = MultiMCPackageIndexEntry(
|
||||
packageEntry = PolyMCPackageIndexEntry(
|
||||
{
|
||||
"uid" : package,
|
||||
"name" : sharedData.name,
|
||||
@ -80,5 +80,5 @@ for package in sorted(os.listdir('multimc')):
|
||||
packages.packages.append(packageEntry)
|
||||
|
||||
# write the repository package index
|
||||
with open("multimc/index.json", 'w') as outfile:
|
||||
with open(PMC_DIR + "/index.json", 'w') as outfile:
|
||||
json.dump(packages.to_json(), outfile, sort_keys=True, indent=4)
|
||||
|
@ -1,5 +1,6 @@
|
||||
from metautil import *
|
||||
|
||||
|
||||
'''
|
||||
"repo":{
|
||||
"stream":"RELEASE",
|
||||
@ -37,7 +38,7 @@ class LiteloaderRepo(JsonObject):
|
||||
'''
|
||||
class LiteloaderArtefact(JsonObject):
|
||||
tweakClass = StringProperty(required=True)
|
||||
libraries = ListProperty(MultiMCLibrary, required=True)
|
||||
libraries = ListProperty(PolyMCLibrary, required=True)
|
||||
stream = StringProperty(required=True)
|
||||
file = StringProperty(required=True)
|
||||
version = StringProperty(required=True)
|
||||
@ -59,7 +60,7 @@ class LiteloaderSnapshot(LiteloaderArtefact):
|
||||
lastSuccessfulBuild = IntegerProperty()
|
||||
|
||||
class LiteloaderSnapshots(JsonObject):
|
||||
libraries = ListProperty(MultiMCLibrary, required=True)
|
||||
libraries = ListProperty(PolyMCLibrary, required=True)
|
||||
liteloader = DictProperty(LiteloaderSnapshot, name="com.mumfrey:liteloader", required=True)
|
||||
|
||||
'''
|
||||
@ -100,4 +101,3 @@ class LiteloaderMeta(JsonObject):
|
||||
class LiteloaderIndex(JsonObject):
|
||||
meta = ObjectProperty(LiteloaderMeta, required=True)
|
||||
versions = DictProperty(LiteloaderEntry)
|
||||
|
||||
|
108
metautil.py
108
metautil.py
@ -1,8 +1,12 @@
|
||||
import json
|
||||
from pprint import pprint
|
||||
from jsonobject import *
|
||||
import datetime
|
||||
import json
|
||||
import os
|
||||
from pprint import pprint
|
||||
|
||||
import iso8601
|
||||
from jsonobject import *
|
||||
|
||||
PMC_DIR = os.environ["PMC_DIR"]
|
||||
|
||||
class ISOTimestampProperty(AbstractDateProperty):
|
||||
|
||||
@ -236,24 +240,24 @@ class MojangVersionFile (JsonObject):
|
||||
complianceLevel = IntegerProperty(exclude_if_none=True, default=None)
|
||||
javaVersion = ObjectProperty(JavaVersion, exclude_if_none=True, default=None)
|
||||
|
||||
CurrentMultiMCFormatVersion = 1
|
||||
def validateSupportedMultiMCVersion(version):
|
||||
if version > CurrentMultiMCFormatVersion:
|
||||
raise UnknownVersionException("Unsupported MultiMC format version: %d. Max supported is: %d" % (version, CurrentMultiMCFormatVersion))
|
||||
CurrentPolyMCFormatVersion = 1
|
||||
def validateSupportedPolyMCVersion(version):
|
||||
if version > CurrentPolyMCFormatVersion:
|
||||
raise UnknownVersionException("Unsupported PolyMC format version: %d. Max supported is: %d" % (version, CurrentPolyMCFormatVersion))
|
||||
|
||||
class MultiMCLibrary (MojangLibrary):
|
||||
class PolyMCLibrary (MojangLibrary):
|
||||
url = StringProperty(exclude_if_none=True, default=None)
|
||||
mmcHint = StringProperty(name="MMC-hint", exclude_if_none=True, default=None)
|
||||
pmcHint = StringProperty(name="PMC-hint", exclude_if_none=True, default=None)
|
||||
|
||||
class VersionedJsonObject(JsonObject):
|
||||
formatVersion = IntegerProperty(default=CurrentMultiMCFormatVersion, validators=validateSupportedMultiMCVersion)
|
||||
formatVersion = IntegerProperty(default=CurrentPolyMCFormatVersion, validators=validateSupportedPolyMCVersion)
|
||||
|
||||
class DependencyEntry (JsonObject):
|
||||
uid = StringProperty(required=True)
|
||||
equals = StringProperty(exclude_if_none=True, default=None)
|
||||
suggests = StringProperty(exclude_if_none=True, default=None)
|
||||
|
||||
class MultiMCVersionFile (VersionedJsonObject):
|
||||
class PolyMCVersionFile (VersionedJsonObject):
|
||||
name = StringProperty(required=True)
|
||||
version = StringProperty(required=True)
|
||||
uid = StringProperty(required=True)
|
||||
@ -261,10 +265,10 @@ class MultiMCVersionFile (VersionedJsonObject):
|
||||
conflicts = ListProperty(DependencyEntry, exclude_if_none=True, default=None)
|
||||
volatile = BooleanProperty(exclude_if_none=True, default=None)
|
||||
assetIndex = ObjectProperty(MojangAssets, exclude_if_none=True, default=None)
|
||||
libraries = ListProperty(MultiMCLibrary, exclude_if_none=True, default=None)
|
||||
mavenFiles = ListProperty(MultiMCLibrary, exclude_if_none=True, default=None)
|
||||
mainJar = ObjectProperty(MultiMCLibrary, exclude_if_none=True, default=None)
|
||||
jarMods = ListProperty(MultiMCLibrary, exclude_if_none=True, default=None)
|
||||
libraries = ListProperty(PolyMCLibrary, exclude_if_none=True, default=None)
|
||||
mavenFiles = ListProperty(PolyMCLibrary, exclude_if_none=True, default=None)
|
||||
mainJar = ObjectProperty(PolyMCLibrary, exclude_if_none=True, default=None)
|
||||
jarMods = ListProperty(PolyMCLibrary, exclude_if_none=True, default=None)
|
||||
mainClass = StringProperty(exclude_if_none=True, default=None)
|
||||
appletClass = StringProperty(exclude_if_none=True, default=None)
|
||||
minecraftArguments = StringProperty(exclude_if_none=True, default=None)
|
||||
@ -284,20 +288,20 @@ class UnknownComplianceLevelException(Exception):
|
||||
self.message = message
|
||||
|
||||
|
||||
# Convert Mojang version file object to a MultiMC version file object
|
||||
def MojangToMultiMC (file, name, uid, version):
|
||||
mmcFile = MultiMCVersionFile(
|
||||
# Convert Mojang version file object to a PolyMC version file object
|
||||
def MojangToPolyMC (file, name, uid, version):
|
||||
pmcFile = PolyMCVersionFile(
|
||||
{
|
||||
"name": name,
|
||||
"uid": uid,
|
||||
"version": version
|
||||
}
|
||||
)
|
||||
mmcFile.assetIndex = file.assetIndex
|
||||
mmcFile.libraries = file.libraries
|
||||
mmcFile.mainClass = file.mainClass
|
||||
pmcFile.assetIndex = file.assetIndex
|
||||
pmcFile.libraries = file.libraries
|
||||
pmcFile.mainClass = file.mainClass
|
||||
if file.id:
|
||||
mainJar = MultiMCLibrary(
|
||||
mainJar = PolyMCLibrary(
|
||||
{
|
||||
"name": "com.mojang:minecraft:%s:client" % file.id,
|
||||
}
|
||||
@ -309,25 +313,25 @@ def MojangToMultiMC (file, name, uid, version):
|
||||
mainJar.downloads.artifact.url = cldl.url
|
||||
mainJar.downloads.artifact.sha1 = cldl.sha1
|
||||
mainJar.downloads.artifact.size = cldl.size
|
||||
mmcFile.mainJar = mainJar
|
||||
pmcFile.mainJar = mainJar
|
||||
|
||||
mmcFile.minecraftArguments = file.minecraftArguments
|
||||
mmcFile.releaseTime = file.releaseTime
|
||||
pmcFile.minecraftArguments = file.minecraftArguments
|
||||
pmcFile.releaseTime = file.releaseTime
|
||||
# time should not be set.
|
||||
mmcFile.type = file.type
|
||||
pmcFile.type = file.type
|
||||
maxSupportedLevel = 1
|
||||
if file.complianceLevel:
|
||||
if file.complianceLevel == 0:
|
||||
pass
|
||||
elif file.complianceLevel == 1:
|
||||
if not mmcFile.addTraits:
|
||||
mmcFile.addTraits = []
|
||||
mmcFile.addTraits.append("XR:Initial")
|
||||
if not pmcFile.addTraits:
|
||||
pmcFile.addTraits = []
|
||||
pmcFile.addTraits.append("XR:Initial")
|
||||
else:
|
||||
raise UnknownComplianceLevelException("Unsupported Mojang compliance level: %d. Max supported is: %d" % (file.complianceLevel, maxSupportedLevel))
|
||||
return mmcFile
|
||||
return pmcFile
|
||||
|
||||
class MultiMCSharedPackageData(VersionedJsonObject):
|
||||
class PolyMCSharedPackageData(VersionedJsonObject):
|
||||
name = StringProperty(required=True)
|
||||
uid = StringProperty(required=True)
|
||||
recommended = ListProperty(StringProperty, exclude_if_none=True, default=None)
|
||||
@ -337,24 +341,24 @@ class MultiMCSharedPackageData(VersionedJsonObject):
|
||||
|
||||
def write(self):
|
||||
try:
|
||||
with open("multimc/%s/package.json" % self.uid, 'w') as file:
|
||||
with open(PMC_DIR + "/%s/package.json" % self.uid, 'w') as file:
|
||||
json.dump(self.to_json(), file, sort_keys=True, indent=4)
|
||||
except EnvironmentError as e:
|
||||
print("Error while trying to save shared packaged data for %s:" % self.uid, e)
|
||||
|
||||
def writeSharedPackageData(uid, name):
|
||||
desc = MultiMCSharedPackageData({
|
||||
desc = PolyMCSharedPackageData({
|
||||
'name': name,
|
||||
'uid': uid
|
||||
})
|
||||
with open("multimc/%s/package.json" % uid, 'w') as file:
|
||||
with open(PMC_DIR + "/%s/package.json" % uid, 'w') as file:
|
||||
json.dump(desc.to_json(), file, sort_keys=True, indent=4)
|
||||
|
||||
def readSharedPackageData(uid):
|
||||
with open("multimc/%s/package.json" % uid, 'r') as file:
|
||||
return MultiMCSharedPackageData(json.load(file))
|
||||
with open(PMC_DIR + "/%s/package.json" % uid, 'r') as file:
|
||||
return PolyMCSharedPackageData(json.load(file))
|
||||
|
||||
class MultiMCVersionIndexEntry(JsonObject):
|
||||
class PolyMCVersionIndexEntry(JsonObject):
|
||||
version = StringProperty()
|
||||
type = StringProperty(exclude_if_none=True, default=None)
|
||||
releaseTime = ISOTimestampProperty()
|
||||
@ -364,21 +368,21 @@ class MultiMCVersionIndexEntry(JsonObject):
|
||||
volatile = BooleanProperty(exclude_if_none=True, default=None)
|
||||
sha256 = StringProperty()
|
||||
|
||||
class MultiMCVersionIndex(VersionedJsonObject):
|
||||
class PolyMCVersionIndex(VersionedJsonObject):
|
||||
name = StringProperty()
|
||||
uid = StringProperty()
|
||||
versions = ListProperty(MultiMCVersionIndexEntry)
|
||||
versions = ListProperty(PolyMCVersionIndexEntry)
|
||||
|
||||
class MultiMCPackageIndexEntry(JsonObject):
|
||||
class PolyMCPackageIndexEntry(JsonObject):
|
||||
name = StringProperty()
|
||||
uid = StringProperty()
|
||||
sha256 = StringProperty()
|
||||
|
||||
class MultiMCPackageIndex(VersionedJsonObject):
|
||||
packages = ListProperty(MultiMCPackageIndexEntry)
|
||||
class PolyMCPackageIndex(VersionedJsonObject):
|
||||
packages = ListProperty(PolyMCPackageIndexEntry)
|
||||
|
||||
'''
|
||||
The MultiMC static override file for legacy looks like this:
|
||||
The PolyMC static override file for legacy looks like this:
|
||||
{
|
||||
"versions": [
|
||||
...
|
||||
@ -405,19 +409,19 @@ class LegacyOverrideEntry(JsonObject):
|
||||
class LegacyOverrideIndex(JsonObject):
|
||||
versions = DictProperty(LegacyOverrideEntry)
|
||||
|
||||
def ApplyLegacyOverride (mmcFile, legacyOverride):
|
||||
def ApplyLegacyOverride (pmcFile, legacyOverride):
|
||||
# simply hard override classes
|
||||
mmcFile.mainClass = legacyOverride.mainClass
|
||||
mmcFile.appletClass = legacyOverride.appletClass
|
||||
pmcFile.mainClass = legacyOverride.mainClass
|
||||
pmcFile.appletClass = legacyOverride.appletClass
|
||||
# if we have an updated release time (more correct than Mojang), use it
|
||||
if legacyOverride.releaseTime != None:
|
||||
mmcFile.releaseTime = legacyOverride.releaseTime
|
||||
pmcFile.releaseTime = legacyOverride.releaseTime
|
||||
# add traits, if any
|
||||
if legacyOverride.addTraits:
|
||||
if not mmcFile.addTraits:
|
||||
mmcFile.addTraits = []
|
||||
mmcFile.addTraits = mmcFile.addTraits + legacyOverride.addTraits
|
||||
if not pmcFile.addTraits:
|
||||
pmcFile.addTraits = []
|
||||
pmcFile.addTraits = pmcFile.addTraits + legacyOverride.addTraits
|
||||
# remove all libraries - they are not needed for legacy
|
||||
mmcFile.libraries = None
|
||||
pmcFile.libraries = None
|
||||
# remove minecraft arguments - we use our own hardcoded ones
|
||||
mmcFile.minecraftArguments = None
|
||||
pmcFile.minecraftArguments = None
|
||||
|
5
requirements.txt
Normal file
5
requirements.txt
Normal file
@ -0,0 +1,5 @@
|
||||
cachecontrol = "0.12.10"
|
||||
iso8601 = "1.0.2"
|
||||
requests = "2.27.1"
|
||||
lockfile = "0.12.2"
|
||||
jsonobject = "0.9.10"
|
@ -13,8 +13,8 @@ popd
|
||||
echo
|
||||
|
||||
|
||||
echo "MultiMC:"
|
||||
pushd "${MMC_DIR}"
|
||||
echo "PolyMC:"
|
||||
pushd "${PMC_DIR}"
|
||||
git status
|
||||
popd
|
||||
echo
|
||||
|
28
update.sh
28
update.sh
@ -26,7 +26,7 @@ function fail_in {
|
||||
}
|
||||
|
||||
function fail_out {
|
||||
cd "${BASEDIR}/${MMC_DIR}"
|
||||
cd "${BASEDIR}/${PMC_DIR}"
|
||||
git reset --hard HEAD
|
||||
exit 1
|
||||
}
|
||||
@ -38,10 +38,10 @@ git reset --hard HEAD || exit 1
|
||||
git checkout ${BRANCH} || exit 1
|
||||
cd "${BASEDIR}"
|
||||
|
||||
./updateMojang.py || fail_in
|
||||
./updateForge.py || fail_in
|
||||
./updateFabric.py || fail_in
|
||||
./updateLiteloader.py || fail_in
|
||||
python updateMojang.py || fail_in
|
||||
python updateForge.py || fail_in
|
||||
python updateFabric.py || fail_in
|
||||
python updateLiteloader.py || fail_in
|
||||
|
||||
if [ "${DEPLOY_TO_GIT}" = true ] ; then
|
||||
cd "${BASEDIR}/${UPSTREAM_DIR}"
|
||||
@ -56,19 +56,19 @@ if [ "${DEPLOY_TO_GIT}" = true ] ; then
|
||||
cd "${BASEDIR}"
|
||||
fi
|
||||
|
||||
cd "${BASEDIR}/${MMC_DIR}"
|
||||
cd "${BASEDIR}/${PMC_DIR}"
|
||||
git reset --hard HEAD || exit 1
|
||||
git checkout ${BRANCH} || exit 1
|
||||
cd "${BASEDIR}"
|
||||
|
||||
./generateMojang.py || fail_out
|
||||
./generateForge.py || fail_out
|
||||
./generateFabric.py || fail_in
|
||||
./generateLiteloader.py || fail_out
|
||||
./index.py || fail_out
|
||||
python generateMojang.py || fail_out
|
||||
python generateForge.py || fail_out
|
||||
python generateFabric.py || fail_in
|
||||
python generateLiteloader.py || fail_out
|
||||
python index.py || fail_out
|
||||
|
||||
if [ "${DEPLOY_TO_GIT}" = true ] ; then
|
||||
cd "${BASEDIR}/${MMC_DIR}"
|
||||
cd "${BASEDIR}/${PMC_DIR}"
|
||||
git add index.json org.lwjgl/* net.minecraft/* || fail_out
|
||||
git add net.minecraftforge/* || fail_out
|
||||
git add net.fabricmc.fabric-loader/* net.fabricmc.intermediary/* || fail_out
|
||||
@ -100,10 +100,10 @@ if [ "${DEPLOY_TO_FOLDER}" = true ] ; then
|
||||
DEPLOY_FOLDER_var="DEPLOY_FOLDER_$MODE"
|
||||
DEPLOY_FOLDER="${!DEPLOY_FOLDER_var}"
|
||||
echo "Deploying to ${DEPLOY_FOLDER}"
|
||||
rsync -rvog --chown=${DEPLOY_FOLDER_USER}:${DEPLOY_FOLDER_GROUP} --exclude=.git ${BASEDIR}/${MMC_DIR}/ ${DEPLOY_FOLDER}
|
||||
rsync -rvog --chown=${DEPLOY_FOLDER_USER}:${DEPLOY_FOLDER_GROUP} --exclude=.git ${BASEDIR}/${PMC_DIR}/ ${DEPLOY_FOLDER}
|
||||
fi
|
||||
if [ "${DEPLOY_TO_S3}" = true ] ; then
|
||||
s3cmd -c ${BASEDIR}/config/s3cmd.cfg --exclude=".git*" --delete-removed sync ${BASEDIR}/${MMC_DIR}/ ${S3_BUCKET} || exit 2
|
||||
s3cmd -c ${BASEDIR}/config/s3cmd.cfg --exclude=".git*" --delete-removed sync ${BASEDIR}/${PMC_DIR}/ ${S3_BUCKET} || exit 2
|
||||
fi
|
||||
|
||||
exit 0
|
||||
|
@ -1,12 +1,15 @@
|
||||
#!/usr/bin/python3
|
||||
import os, requests
|
||||
from cachecontrol import CacheControl
|
||||
import datetime
|
||||
import hashlib, json
|
||||
import hashlib
|
||||
import json
|
||||
import os
|
||||
import zipfile
|
||||
|
||||
import requests
|
||||
from cachecontrol import CacheControl
|
||||
from cachecontrol.caches import FileCache
|
||||
from fabricutil import *
|
||||
|
||||
from cachecontrol.caches import FileCache
|
||||
UPSTREAM_DIR = os.environ["UPSTREAM_DIR"]
|
||||
|
||||
forever_cache = FileCache('http_cache', forever=True)
|
||||
sess = CacheControl(requests.Session(), forever_cache)
|
||||
@ -62,20 +65,20 @@ def compute_jar_file(path, url):
|
||||
with open(path + ".json", 'w') as outfile:
|
||||
json.dump(data.to_json(), outfile, sort_keys=True, indent=4)
|
||||
|
||||
mkdirs("upstream/fabric/meta-v2")
|
||||
mkdirs("upstream/fabric/loader-installer-json")
|
||||
mkdirs("upstream/fabric/jars")
|
||||
mkdirs(UPSTREAM_DIR + "/fabric/meta-v2")
|
||||
mkdirs(UPSTREAM_DIR + "/fabric/loader-installer-json")
|
||||
mkdirs(UPSTREAM_DIR + "/fabric/jars")
|
||||
|
||||
# get the version list for each component we are interested in
|
||||
for component in ["intermediary", "loader"]:
|
||||
index = get_json_file("upstream/fabric/meta-v2/" + component + ".json", "https://meta.fabricmc.net/v2/versions/" + component)
|
||||
index = get_json_file(UPSTREAM_DIR + "/fabric/meta-v2/" + component + ".json", "https://meta.fabricmc.net/v2/versions/" + component)
|
||||
for it in index:
|
||||
jarMavenUrl = get_maven_url(it["maven"], "https://maven.fabricmc.net/", ".jar")
|
||||
compute_jar_file("upstream/fabric/jars/" + it["maven"].replace(":", "."), jarMavenUrl)
|
||||
compute_jar_file(UPSTREAM_DIR + "/fabric/jars/" + it["maven"].replace(":", "."), jarMavenUrl)
|
||||
|
||||
# for each loader, download installer JSON file from maven
|
||||
with open("upstream/fabric/meta-v2/loader.json", 'r', encoding='utf-8') as loaderVersionIndexFile:
|
||||
with open(UPSTREAM_DIR + "/fabric/meta-v2/loader.json", 'r', encoding='utf-8') as loaderVersionIndexFile:
|
||||
loaderVersionIndex = json.load(loaderVersionIndexFile)
|
||||
for it in loaderVersionIndex:
|
||||
mavenUrl = get_maven_url(it["maven"], "https://maven.fabricmc.net/", ".json")
|
||||
get_json_file("upstream/fabric/loader-installer-json/" + it["version"] + ".json", mavenUrl)
|
||||
get_json_file(UPSTREAM_DIR + "/fabric/loader-installer-json/" + it["version"] + ".json", mavenUrl)
|
||||
|
@ -1,26 +1,26 @@
|
||||
#!/usr/bin/python3
|
||||
'''
|
||||
Get the source files necessary for generating Forge versions
|
||||
'''
|
||||
from __future__ import print_function
|
||||
import copy
|
||||
import datetime
|
||||
import hashlib
|
||||
import json
|
||||
import os
|
||||
import os.path
|
||||
import re
|
||||
import sys
|
||||
import zipfile
|
||||
from contextlib import suppress
|
||||
from pathlib import Path
|
||||
|
||||
import requests
|
||||
from cachecontrol import CacheControl
|
||||
from cachecontrol.caches import FileCache
|
||||
|
||||
import json
|
||||
import copy
|
||||
import re
|
||||
import zipfile
|
||||
from metautil import *
|
||||
from jsonobject import *
|
||||
from forgeutil import *
|
||||
import os.path
|
||||
import datetime
|
||||
import hashlib
|
||||
from pathlib import Path
|
||||
from contextlib import suppress
|
||||
from jsonobject import *
|
||||
from metautil import *
|
||||
|
||||
UPSTREAM_DIR = os.environ["UPSTREAM_DIR"]
|
||||
|
||||
def eprint(*args, **kwargs):
|
||||
print(*args, file=sys.stderr, **kwargs)
|
||||
@ -80,7 +80,7 @@ for promoKey, shortversion in promotions_json.get('promos').items():
|
||||
versionExpression = re.compile("^(?P<mc>[0-9a-zA-Z_\\.]+)-(?P<ver>[0-9\\.]+\\.(?P<build>[0-9]+))(-(?P<branch>[a-zA-Z0-9\\.]+))?$")
|
||||
|
||||
def getSingleForgeFilesManifest(longversion):
|
||||
pathThing = "upstream/forge/files_manifests/%s.json" % longversion
|
||||
pathThing = UPSTREAM_DIR + "/forge/files_manifests/%s.json" % longversion
|
||||
files_manifest_file = Path(pathThing)
|
||||
from_file = False
|
||||
if files_manifest_file.is_file():
|
||||
@ -144,11 +144,11 @@ def getSingleForgeFilesManifest(longversion):
|
||||
|
||||
print("")
|
||||
print("Making dirs...")
|
||||
os.makedirs("upstream/forge/jars/", exist_ok=True)
|
||||
os.makedirs("upstream/forge/installer_info/", exist_ok=True)
|
||||
os.makedirs("upstream/forge/installer_manifests/", exist_ok=True)
|
||||
os.makedirs("upstream/forge/version_manifests/", exist_ok=True)
|
||||
os.makedirs("upstream/forge/files_manifests/", exist_ok=True)
|
||||
os.makedirs(UPSTREAM_DIR + "/forge/jars/", exist_ok=True)
|
||||
os.makedirs(UPSTREAM_DIR + "/forge/installer_info/", exist_ok=True)
|
||||
os.makedirs(UPSTREAM_DIR + "/forge/installer_manifests/", exist_ok=True)
|
||||
os.makedirs(UPSTREAM_DIR + "/forge/version_manifests/", exist_ok=True)
|
||||
os.makedirs(UPSTREAM_DIR + "/forge/files_manifests/", exist_ok=True)
|
||||
|
||||
print("")
|
||||
print("Processing versions:")
|
||||
@ -205,13 +205,13 @@ for mcversion, info in newIndex.by_mcversion.items():
|
||||
print("")
|
||||
print("Dumping index files...")
|
||||
|
||||
with open("upstream/forge/maven-metadata.json", 'w', encoding='utf-8') as f:
|
||||
with open(UPSTREAM_DIR + "/forge/maven-metadata.json", 'w', encoding='utf-8') as f:
|
||||
json.dump(main_json, f, sort_keys=True, indent=4)
|
||||
|
||||
with open("upstream/forge/promotions_slim.json", 'w', encoding='utf-8') as f:
|
||||
with open(UPSTREAM_DIR + "/forge/promotions_slim.json", 'w', encoding='utf-8') as f:
|
||||
json.dump(promotions_json, f, sort_keys=True, indent=4)
|
||||
|
||||
with open("upstream/forge/derived_index.json", 'w', encoding='utf-8') as f:
|
||||
with open(UPSTREAM_DIR + "/forge/derived_index.json", 'w', encoding='utf-8') as f:
|
||||
json.dump(newIndex.to_json(), f, sort_keys=True, indent=4)
|
||||
|
||||
versions = []
|
||||
@ -233,12 +233,12 @@ for id, entry in newIndex.versions.items():
|
||||
eprint ("Skipping %d with no valid files" % version.build)
|
||||
continue
|
||||
|
||||
jarFilepath = "upstream/forge/jars/%s" % version.filename()
|
||||
jarFilepath = UPSTREAM_DIR + "/forge/jars/%s" % version.filename()
|
||||
|
||||
if version.usesInstaller():
|
||||
installerInfoFilepath = "upstream/forge/installer_info/%s.json" % version.longVersion
|
||||
profileFilepath = "upstream/forge/installer_manifests/%s.json" % version.longVersion
|
||||
versionJsonFilepath = "upstream/forge/version_manifests/%s.json" % version.longVersion
|
||||
installerInfoFilepath = UPSTREAM_DIR + "/forge/installer_info/%s.json" % version.longVersion
|
||||
profileFilepath = UPSTREAM_DIR + "/forge/installer_manifests/%s.json" % version.longVersion
|
||||
versionJsonFilepath = UPSTREAM_DIR + "/forge/version_manifests/%s.json" % version.longVersion
|
||||
installerRefreshRequired = False
|
||||
if not os.path.isfile(profileFilepath):
|
||||
installerRefreshRequired = True
|
||||
|
@ -1,19 +1,19 @@
|
||||
#!/usr/bin/python3
|
||||
'''
|
||||
Get the source files necessary for generating Forge versions
|
||||
'''
|
||||
from __future__ import print_function
|
||||
import copy
|
||||
import json
|
||||
import os
|
||||
import os.path
|
||||
import sys
|
||||
|
||||
import requests
|
||||
from cachecontrol import CacheControl
|
||||
from cachecontrol.caches import FileCache
|
||||
|
||||
import json
|
||||
from jsonobject import *
|
||||
from liteloaderutil import *
|
||||
import os.path
|
||||
import copy
|
||||
|
||||
UPSTREAM_DIR = os.environ["UPSTREAM_DIR"]
|
||||
|
||||
def eprint(*args, **kwargs):
|
||||
print(*args, file=sys.stderr, **kwargs)
|
||||
@ -36,5 +36,5 @@ origStr = json.dumps(main_json, sort_keys=True)
|
||||
assert newStr == origStr
|
||||
|
||||
# save the json it to file
|
||||
with open("upstream/liteloader/versions.json", 'w', encoding='utf-8') as f:
|
||||
with open(UPSTREAM_DIR + "/liteloader/versions.json", 'w', encoding='utf-8') as f:
|
||||
json.dump(main_json, f, sort_keys=True, indent=4)
|
||||
|
@ -1,10 +1,12 @@
|
||||
#!/usr/bin/python3
|
||||
import json
|
||||
import os
|
||||
|
||||
import requests
|
||||
from cachecontrol import CacheControl
|
||||
import json
|
||||
from cachecontrol.caches import FileCache
|
||||
from metautil import *
|
||||
|
||||
from cachecontrol.caches import FileCache
|
||||
UPSTREAM_DIR = os.environ["UPSTREAM_DIR"]
|
||||
|
||||
forever_cache = FileCache('http_cache', forever=True)
|
||||
sess = CacheControl(requests.Session(), forever_cache)
|
||||
@ -29,7 +31,7 @@ def get_file(path, url):
|
||||
# get the local version list
|
||||
localVersionlist = None
|
||||
try:
|
||||
with open("upstream/mojang/version_manifest_v2.json", 'r', encoding='utf-8') as localIndexFile:
|
||||
with open(UPSTREAM_DIR + "/mojang/version_manifest_v2.json", 'r', encoding='utf-8') as localIndexFile:
|
||||
localVersionlist = MojangIndexWrap(json.load(localIndexFile))
|
||||
except:
|
||||
localVersionlist = MojangIndexWrap({})
|
||||
@ -61,12 +63,12 @@ assets = {}
|
||||
for id in updatedIDs:
|
||||
version = remoteVersionlist.versions[id]
|
||||
print("Updating " + version.id + " to timestamp " + version.releaseTime.strftime('%s'))
|
||||
assetId, assetUrl = get_version_file( "upstream/mojang/versions/" + id + '.json', version.url)
|
||||
assetId, assetUrl = get_version_file( UPSTREAM_DIR + "/mojang/versions/" + id + '.json', version.url)
|
||||
assets[assetId] = assetUrl
|
||||
|
||||
for assetId, assetUrl in iter(assets.items()):
|
||||
print("assets", assetId, assetUrl)
|
||||
get_file( "upstream/mojang/assets/" + assetId + '.json', assetUrl)
|
||||
get_file( UPSTREAM_DIR + "/mojang/assets/" + assetId + '.json', assetUrl)
|
||||
|
||||
with open("upstream/mojang/version_manifest_v2.json", 'w', encoding='utf-8') as f:
|
||||
with open(UPSTREAM_DIR + "/mojang/version_manifest_v2.json", 'w', encoding='utf-8') as f:
|
||||
json.dump(main_json, f, sort_keys=True, indent=4)
|
||||
|
Loading…
x
Reference in New Issue
Block a user