mirror of
https://github.com/hrfee/jfa-go.git
synced 2024-11-05 09:50:11 +00:00
Harvey Tindall
19bd31d968
Added script to convert config-base.json into a go struct, so that access to config values and metadata could be unified and simpler. It probably won't see any actual use though as mapping the ini into it is painful.
58 lines
1.9 KiB
Python
58 lines
1.9 KiB
Python
import json
|
|
|
|
with open("config-formatted.json", "r") as f:
|
|
config = json.load(f)
|
|
|
|
indent = 0
|
|
|
|
|
|
def writeln(ln):
|
|
global indent
|
|
if "}" in ln and "{" not in ln:
|
|
indent -= 1
|
|
s.write(("\t" * indent) + ln + "\n")
|
|
if "{" in ln and "}" not in ln:
|
|
indent += 1
|
|
|
|
|
|
with open("configStruct.go", "w") as s:
|
|
writeln("package main")
|
|
writeln("")
|
|
writeln("type Metadata struct{")
|
|
writeln('Name string `json:"name"`')
|
|
writeln('Description string `json:"description"`')
|
|
writeln("}")
|
|
writeln("")
|
|
writeln("type Config struct{")
|
|
if "order" in config:
|
|
writeln('Order []string `json:"order"`')
|
|
for section in [x for x in config.keys() if x != "order"]:
|
|
title = "".join([x.title() for x in section.split("_")])
|
|
writeln(title + " struct{")
|
|
if "order" in config[section]:
|
|
writeln('Order []string `json:"order"`')
|
|
if "meta" in config[section]:
|
|
writeln('Meta Metadata `json:"meta"`')
|
|
for setting in [
|
|
x for x in config[section].keys() if x != "order" and x != "meta"
|
|
]:
|
|
name = "".join([x.title() for x in setting.split("_")])
|
|
writeln(name + " struct{")
|
|
writeln('Name string `json:"name"`')
|
|
writeln('Required bool `json:"required"`')
|
|
writeln('Restart bool `json:"requires_restart"`')
|
|
writeln('Description string `json:"description"`')
|
|
writeln('Type string `json:"type"`')
|
|
dt = config[section][setting]["type"]
|
|
if dt == "select":
|
|
dt = "string"
|
|
writeln('Options []string `json:"options"`')
|
|
elif dt == "number":
|
|
dt = "int"
|
|
elif dt != "bool":
|
|
dt = "string"
|
|
writeln(f'Value {dt} `json:"value" cfg:"{setting}"`')
|
|
writeln("} " + f'`json:"{setting}" cfg:"{setting}"`')
|
|
writeln("} " + f'`json:"{section}"`')
|
|
writeln("}")
|