Skip to content

Instantly share code, notes, and snippets.

@jdlrobson
Created July 5, 2017 20:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jdlrobson/b462874666c47dbd1ea1aaf25bb85b45 to your computer and use it in GitHub Desktop.
Save jdlrobson/b462874666c47dbd1ea1aaf25bb85b45 to your computer and use it in GitHub Desktop.
merge.py
import json
from collections import OrderedDict
f = open('skin.json', 'r')
skinData = json.load(f, object_pairs_hook=OrderedDict)
f.close()
newModule = {
"class": "MFResourceLoaderParsedMessageModule",
"targets": [ "desktop", "mobile" ],
"dependencies": [],
"messages": {},
"scripts": []
}
merge = [
"skins.minerva.scripts.top",
"skins.minerva.scripts",
"skins.minerva.tablet.scripts",
"skins.minerva.notifications",
"skins.minerva.newusers",
"skins.minerva.fontchanger",
"skins.minerva.editor",
"skins.minerva.categories",
"skins.minerva.backtotop",
"skins.minerva.talk",
"skins.minerva.toggling",
"skins.minerva.watchstar"
]
msgKey = 0
NEW_MODULE_NAME = "skins.minerva.page"
modules = skinData["ResourceModules"]
alias = {
"targets": [ "desktop", "mobile" ],
"dependencies": [NEW_MODULE_NAME]
}
for moduleName in merge:
module = modules[moduleName]
if "scripts" in module:
scripts = module["scripts"]
for script in scripts:
newModule["scripts"].append( script )
if "dependencies" in module:
deps = module["dependencies"]
for dep in deps:
if dep not in newModule["dependencies"] and dep not in merge:
newModule["dependencies"].append( dep )
if "messages" in module:
messages = module["messages"]
if type(messages) == type([]):
for message in messages:
newModule["messages"]["%s"%msgKey] = message
msgKey += 1
else:
newModule["messages"].update(messages)
skinData["ResourceModules"][moduleName] = alias
skinData["ResourceModules"][NEW_MODULE_NAME] = newModule
with open("skin.json", 'w') as outfile:
json.dump(skinData, outfile, indent = "\t", ensure_ascii=False,
separators=(',', ': '), sort_keys=False)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment