diff --git a/Makefile b/Makefile index 83dee1f9..67da1a87 100644 --- a/Makefile +++ b/Makefile @@ -110,6 +110,14 @@ dist: $(OBJS) README.html VERSION=$(VERSION) scripts/makepkgs freedm $(FREEDM) $(DISTDOCS) VERSION=$(VERSION) scripts/makepkgs freedoom $(FREEDOOM1) $(FREEDOOM2) $(DISTDOCS) +json: $(OBJS) +ifndef JSON + @echo "Define JSON as the file to output." >&2 + @exit 1 +else + JSON=$(JSON) VERSION=$(VERSION) scripts/makejson +endif + clean: rm -f *.html deutex.log $(OBJS) \ ./wadinfo.txt ./wadinfo_phase1.txt \ diff --git a/scripts/makejson b/scripts/makejson new file mode 100755 index 00000000..1ed51791 --- /dev/null +++ b/scripts/makejson @@ -0,0 +1,87 @@ +#!/usr/bin/env python +# Copyright (c) 2014 +# Contributors to the Freedoom project. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of the freedoom project nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER +# OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +import hashlib +import json +import os +import sys + +# This script is pretty hard-coded to assuming the three IWADs and +# URLs present as of the Freedoom 0.9 release. Not much can be done +# about that, but it will have to be changed whenever the project +# expands or switches web host. + +iwads = { + "freedm.wad": { + "description": "Deathmatch IWAD", + "name": "FreeDM"}, + "freedoom1.wad": { + "description": "Ultimate Doom compatible IWAD", + "name": "Freedoom: Phase 1"}, + "freedoom2.wad": { + "description": "Doom II compatible IWAD", + "name": "Freedoom: Phase 2"}} + +# Find the version to generate JSON for: + +version = os.getenv("VERSION") + +# Find the file to append objects to: + +json_file = os.getenv("JSON") + +if version is None: + sys.stderr.write("Version is not specified for release\n") + sys.exit(1) +if version[0] is 'v': + # Strip the leading 'v' from versioning + version = version[1:] + +if json_file is None: + sys.stderr.write("JSON file not specified!\n") + sys.exit(1) + +with open("wads/freedoom1.wad", "rb") as f: + iwads["freedoom1.wad"]["md5"] = hashlib.md5(f.read()).hexdigest() + +with open("wads/freedoom2.wad", "rb") as f: + iwads["freedoom2.wad"]["md5"] = hashlib.md5(f.read()).hexdigest() + +with open("wads/freedm.wad", "rb") as f: + iwads["freedm.wad"]["md5"] = hashlib.md5(f.read()).hexdigest() + +iwads["freedoom1.wad"]["url"] = "https://github.com/freedoom/freedoom/releases/downloads/v" + version + "/freedoom-" + version + ".zip" +iwads["freedoom1.wad"]["version"] = version +iwads["freedoom2.wad"]["url"] = "https://github.com/freedoom/freedoom/releases/downloads/v" + version + "/freedoom-" + version + ".zip" +iwads["freedoom2.wad"]["version"] = version +iwads["freedm.wad"]["url"] = "https://github.com/freedoom/freedoom/releases/downloads/v" + version + "/freedm-" + version + ".zip" +iwads["freedm.wad"]["version"] = version + +with open(json_file, "w") as f: + json.dump(iwads, f, indent=2, sort_keys=True)