diff options
author | Trygve Laugstøl <trygvis@inamo.no> | 2020-12-30 20:48:51 +0100 |
---|---|---|
committer | Trygve Laugstøl <trygvis@inamo.no> | 2020-12-30 20:48:51 +0100 |
commit | 866eafabd7398fd1485e7aa285345a7dcea480d0 (patch) | |
tree | d0caab0874640678af7fd1e55685da59eb99de0e /durable_rules-test/py/acme/rai/utils.py | |
parent | ea985dfdb3974f3f22381be01c41dcb06a817831 (diff) | |
download | rules-sandbox-866eafabd7398fd1485e7aa285345a7dcea480d0.tar.gz rules-sandbox-866eafabd7398fd1485e7aa285345a7dcea480d0.tar.bz2 rules-sandbox-866eafabd7398fd1485e7aa285345a7dcea480d0.tar.xz rules-sandbox-866eafabd7398fd1485e7aa285345a7dcea480d0.zip |
Moving everything under durable_rules-test.
Diffstat (limited to 'durable_rules-test/py/acme/rai/utils.py')
-rw-r--r-- | durable_rules-test/py/acme/rai/utils.py | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/durable_rules-test/py/acme/rai/utils.py b/durable_rules-test/py/acme/rai/utils.py new file mode 100644 index 0000000..bc47d8f --- /dev/null +++ b/durable_rules-test/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 |