diff --git a/liteloaderutil.py b/liteloaderutil.py new file mode 100644 index 0000000..43091a8 --- /dev/null +++ b/liteloaderutil.py @@ -0,0 +1,95 @@ +from metautil import * + +''' + "repo":{ + "stream":"RELEASE", + "type":"m2", + "url":"http:\/\/dl.liteloader.com\/repo\/", + "classifier":"" + }, +''' +class LiteloaderRepo(JsonObject): + stream = StringProperty(required=True) + type = StringProperty(required=True) + url = StringProperty(required=True) + classifier = StringProperty(required=True) + +''' + "53639d52340479ccf206a04f5e16606f":{ + "tweakClass":"com.mumfrey.liteloader.launch.LiteLoaderTweaker", + "libraries":[ + { + "name":"net.minecraft:launchwrapper:1.5" + }, + { + "name":"net.sf.jopt-simple:jopt-simple:4.5" + }, + { + "name":"org.ow2.asm:asm-all:4.1" + } + ], + "stream":"RELEASE", + "file":"liteloader-1.5.2_01.jar", + "version":"1.5.2_01", + "md5":"53639d52340479ccf206a04f5e16606f", + "timestamp":"1367366420" + }, +''' +class LiteloaderArtefact(JsonObject): + tweakClass = StringProperty(required=True) + libraries = ListProperty(MultiMCLibrary, required=True) + stream = StringProperty(required=True) + file = StringProperty(required=True) + version = StringProperty(required=True) + md5 = StringProperty(required=True) + timestamp = StringProperty(required=True) + srcJar = StringProperty(default=None, exclude_if_none=True) + mcpJar = StringProperty(default=None, exclude_if_none=True) + +class LiteloaderArtefacts(JsonObject): + liteloader = DictProperty(LiteloaderArtefact, name="com.mumfrey:liteloader", required=True) + +class LiteloaderSnapshot(LiteloaderArtefact): + lastSuccessfulBuild = IntegerProperty(required=True) + +class LiteloaderSnapshots(JsonObject): + libraries = ListProperty(MultiMCLibrary, required=True) + liteloader = DictProperty(LiteloaderSnapshot, name="com.mumfrey:liteloader", required=True) + +''' + "1.10.2":{ + "repo":{ ... }, + "artefacts":{ + "com.mumfrey:liteloader":{ }, + ... + }, + "snapshots":{ + ... + } +''' +class LiteloaderEntry(JsonObject): + repo = ObjectProperty(LiteloaderRepo, required=True) + artefacts = ObjectProperty(LiteloaderArtefacts, default=None, exclude_if_none=True) + snapshots = ObjectProperty(LiteloaderSnapshots, default=None, exclude_if_none=True) + +''' + "meta":{ + "description":"LiteLoader is a lightweight mod bootstrap designed to provide basic loader functionality for mods which don't need to modify game mechanics.", + "authors":"Mumfrey", + "url":"http:\/\/dl.liteloader.com", + "updated":"2017-02-22T11:34:07+00:00", + "updatedTime":1487763247 + }, +''' +class LiteloaderMeta(JsonObject): + description = StringProperty(required=True) + authors = StringProperty(required=True) + url = StringProperty(required=True) + updated = ISOTimestampProperty(required=True) + updatedTime = IntegerProperty(required=True) + +# The raw Forge version index +class LiteloaderIndex(JsonObject): + meta = ObjectProperty(LiteloaderMeta, required=True) + versions = DictProperty(LiteloaderEntry) + diff --git a/update.sh b/update.sh index 25df874..cf1461b 100755 --- a/update.sh +++ b/update.sh @@ -24,8 +24,9 @@ currentDate=`date --iso-8601` ./updateMojang.py || fail_in ./updateForge.py || fail_in +./updateLiteloader.py || fail_in cd "${BASEDIR}/${UPSTREAM_DIR}" -git add mojang/version_manifest.json mojang/versions/* mojang/assets/* forge/*.json || fail_in +git add mojang/version_manifest.json mojang/versions/* mojang/assets/* forge/*.json liteloader/*.json || fail_in if ! git diff --cached --exit-code ; then git commit -a -m "Update ${currentDate}" || fail_in git push || exit 1 diff --git a/updateLiteloader.py b/updateLiteloader.py new file mode 100755 index 0000000..11479b4 --- /dev/null +++ b/updateLiteloader.py @@ -0,0 +1,40 @@ +#!/usr/bin/python +''' + Get the source files necessary for generating Forge versions +''' +from __future__ import print_function +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 + +def eprint(*args, **kwargs): + print(*args, file=sys.stderr, **kwargs) + +forever_cache = FileCache('http_cache', forever=True) +sess = CacheControl(requests.Session(), forever_cache) + + +# get the remote version list +r = sess.get('http://dl.liteloader.com/versions/versions.json') +r.raise_for_status() + +# make sure it's JSON +main_json = r.json() + +# make sure we understand the schema +remoteVersionlist = LiteloaderIndex(copy.deepcopy(main_json)) +newStr = json.dumps(remoteVersionlist.to_json()) +origStr = json.dumps(main_json) +assert newStr == origStr + +# save the json it to file +with open("upstream/liteloader/versions.json", 'w', encoding='utf-8') as f: + json.dump(main_json, f, sort_keys=True, indent=4)