summaryrefslogtreecommitdiff
path: root/durable_rules-test/py/acme/rai/utils.py
diff options
context:
space:
mode:
authorTrygve Laugstøl <trygvis@inamo.no>2020-12-30 20:48:51 +0100
committerTrygve Laugstøl <trygvis@inamo.no>2020-12-30 20:48:51 +0100
commit866eafabd7398fd1485e7aa285345a7dcea480d0 (patch)
treed0caab0874640678af7fd1e55685da59eb99de0e /durable_rules-test/py/acme/rai/utils.py
parentea985dfdb3974f3f22381be01c41dcb06a817831 (diff)
downloadrules-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.py59
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