# Since go doesn't order its json, this script adds ordered lists
# of section/setting names for the settings tab to use.
import json, argparse

parser = argparse.ArgumentParser()
parser.add_argument("-i", "--input", help="input config base from jf-accounts")
parser.add_argument("-o", "--output", help="output config base for jfa-go")

args = parser.parse_args()

with open(args.input, 'r') as f:
    config = json.load(f)

newconfig = {"sections": {}, "order": []}

for sect in config["sections"]:
    newconfig["order"].append(sect)
    newconfig["sections"][sect] = {}
    newconfig["sections"][sect]["order"] = []
    newconfig["sections"][sect]["meta"] = config["sections"][sect]["meta"]
    newconfig["sections"][sect]["settings"] = {}
    for setting in config["sections"][sect]["settings"]:
        newconfig["sections"][sect]["order"].append(setting)
        newconfig["sections"][sect]["settings"][setting] = config["sections"][sect]["settings"][setting]

with open(args.output, 'w') as f:
    f.write(json.dumps(newconfig, indent=4))