mirror of
https://github.com/ervanalb/keygen.git
synced 2025-12-17 21:55:32 +00:00
json file generation
This commit is contained in:
23
bin/parse.py
23
bin/parse.py
@@ -9,6 +9,7 @@ import itertools
|
||||
|
||||
scad_fn = sys.argv[1]
|
||||
d_fn = sys.argv[2]
|
||||
json_fn = sys.argv[3]
|
||||
|
||||
with open(scad_fn) as f:
|
||||
scad_text = f.read()
|
||||
@@ -16,6 +17,10 @@ with open(scad_fn) as f:
|
||||
poly_reqs = re.findall(r'<(.+\.gen\.scad)>', scad_text)
|
||||
|
||||
modules = re.findall(r"module\s+([^\s\(]+)\s*\("
|
||||
r".+"
|
||||
r'name\s*=\s*("[^"]+")'
|
||||
r".+"
|
||||
r'/\*(.+?)\*/'
|
||||
r".+"
|
||||
r"outlines_k\s*=\s*(\[[^\]]+\])"
|
||||
r".+"
|
||||
@@ -28,9 +33,11 @@ if len(modules) == 0:
|
||||
|
||||
module = modules[0]
|
||||
|
||||
(n, os, ws) = module
|
||||
(m, n, d, os, ws) = module
|
||||
|
||||
# Dirty hack to parse OpenSCAD lists
|
||||
# Dirty hack to parse OpenSCAD types
|
||||
n = json.loads(n)
|
||||
d = d.strip()
|
||||
os = json.loads(os)
|
||||
ws = json.loads(ws)
|
||||
|
||||
@@ -40,7 +47,7 @@ def sanitize(s):
|
||||
all_keys = [(n, o, w) for o in os for w in ws]
|
||||
|
||||
def stl_filename(n, o, w):
|
||||
return "$(STL_DIR)/{n}_{o_s}_{w_s}.stl".format(n=n, o=o, w=w, o_s=sanitize(o), w_s=sanitize(w))
|
||||
return "$(STL_DIR)/{n_s}_{o_s}_{w_s}.stl".format(n_s=sanitize(n), o_s=sanitize(o), w_s=sanitize(w))
|
||||
|
||||
all_keys_makefile = ["{stl_fn}: {scad_fn} {deps}\n\t$(SCAD) $(SCADFLAGS) -D 'outline=\"{o}\"' -D 'warding=\"{w}\"' {scad_fn} -o $@"
|
||||
.format(n=n, o=o, w=w,
|
||||
@@ -52,3 +59,13 @@ all_keys_makefile.append("STL_OBJ += {}".format(" \\\n ".join(all_stl)))
|
||||
with open(d_fn, "w") as f:
|
||||
print("\n".join(all_keys_makefile), file=f
|
||||
)
|
||||
|
||||
json_obj = {
|
||||
"name": n,
|
||||
"description": d,
|
||||
"outlines": os,
|
||||
"wardings": ws
|
||||
}
|
||||
|
||||
with open(json_fn, "w") as f:
|
||||
print(json.dumps(json_obj), file=f)
|
||||
|
||||
Reference in New Issue
Block a user