58 lines
1.9 KiB
Python
58 lines
1.9 KiB
Python
if __name__ != "__main__":
|
|
print("This is ment to be runned as a toolkit for generating achievement database")
|
|
exit()
|
|
|
|
import common
|
|
from os.path import dirname, basename, isfile
|
|
import glob
|
|
import importlib
|
|
import time
|
|
import math
|
|
|
|
SQL_STRING = """
|
|
CREATE TABLE IF NOT EXISTS `achievements` (
|
|
`id` int(11) NOT NULL,
|
|
`name` varchar(32) NOT NULL,
|
|
`description` varchar(128) NOT NULL,
|
|
`icon` varchar(32) NOT NULL,
|
|
`version` int(11) NOT NULL DEFAULT '0',
|
|
PRIMARY KEY (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
|
INSERT INTO achievements (id, name, description, icon, version) VALUES
|
|
"""
|
|
|
|
module_list = glob.glob("handlers/*.py")
|
|
module_list = [basename(f)[:-3] for f in module_list if isfile(f) and not f.endswith("__init__.py")]
|
|
# ^ cat face
|
|
|
|
modules = []
|
|
for module in module_list:
|
|
modules.append(importlib.import_module("handlers.{}".format(module)))
|
|
|
|
modules = sorted(modules, key=lambda k: k.ORDER)
|
|
|
|
SQL_INSERTS = []
|
|
index = 1
|
|
for module in modules:
|
|
module.load()
|
|
for achievement in module.ACHIEVEMENTS:
|
|
SQL_INSERTS.append("({}, '{}', '{}', '{}', {})".format(
|
|
index,
|
|
achievement["name"].replace('"', '\\"').replace("'", "\\'"),
|
|
achievement["description"].replace('"', '\\"').replace("'", "\\'"),
|
|
achievement["icon"].replace('"', '\\"').replace("'", "\\'"),
|
|
module.VERSION
|
|
))
|
|
index += 1
|
|
|
|
SQL_STRING += ",\n".join(SQL_INSERTS) + ";"
|
|
|
|
FILENAME = "achievements-{}.sql".format(math.floor(time.time()))
|
|
with open(FILENAME, "w") as f:
|
|
f.write(SQL_STRING)
|
|
|
|
print("Saved sql export into {}".format(FILENAME))
|
|
print("Import this table into your database.")
|
|
print("""NOTE: Avoid changing the ORDER variable inside the handlers at all cost as this will result in
|
|
new achievement sql data not matching data of already achieved achievements by users.""")
|
|
print("If you know what you are doing you know how to fix this if you still choose to ignore this warning") |