From 023b447ea78380bdec965db04b3ba3621c4d3a5b Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Wed, 30 Dec 2020 17:33:04 +0100 Subject: Organizing code. --- py/acme/rai/utils.py | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 py/acme/rai/utils.py (limited to 'py/acme/rai/utils.py') diff --git a/py/acme/rai/utils.py b/py/acme/rai/utils.py new file mode 100644 index 0000000..bc47d8f --- /dev/null +++ b/py/acme/rai/utils.py @@ -0,0 +1,59 @@ +import os +import os.path +import yaml +from durable.lang import * + +def write_facts(ruleset: set): + facts = get_facts(ruleset) + + types = set((f.get("type") for f in facts)) + + print(f"types: {types}") + + out_dir = "out" + if not os.path.exists(out_dir): + os.mkdir(out_dir) + + basedir = os.path.join(out_dir, ruleset) + if os.path.exists(basedir): + for f in os.listdir(basedir): + p = os.path.join(basedir, f) + if os.path.isdir(p): + for f2 in os.listdir(p): + os.remove(os.path.join(p, f2)) + os.rmdir(p) + else: + os.remove(p) + os.rmdir(basedir) + os.mkdir(basedir) + + for t in types: + typedir = os.path.join(basedir, t) + os.mkdir(typedir) + + fs = [] + for fact in facts: + if fact["type"] != t: + continue + + if fact["type"] == "meta": + continue + + if fact.get("key") is None: + raise Exception(f"Bad fact: no 'key' {fact}") + + try: + del fact["sid"] + except KeyError: + pass + + fs.append(fact) + + i = 0 + for fact in sorted(fs, key=lambda f: f["key"]): + key = fact["key"] + path = os.path.join(typedir, f"{key.replace('/', '_')}.yaml") + with open(path, "w") as f: + s = yaml.dump(fact) + f.write(s) + i = i + 1 -- cgit v1.2.3