diff options
Diffstat (limited to 'yarns.webapp/900-implementations.yarn')
-rw-r--r-- | yarns.webapp/900-implementations.yarn | 92 |
1 files changed, 34 insertions, 58 deletions
diff --git a/yarns.webapp/900-implementations.yarn b/yarns.webapp/900-implementations.yarn index 0fec328..6e0b380 100644 --- a/yarns.webapp/900-implementations.yarn +++ b/yarns.webapp/900-implementations.yarn @@ -85,15 +85,12 @@ Add a `lorries` section to a `lorry-controller.conf`. This hardcodes most of the configuration. IMPLEMENTS GIVEN (\S+) in (\S+) adds lorries (\S+) using prefix (\S+) + cd "$SRCDIR"/yarns.webapp python -c ' import os - import json + import yarnlib - DATADIR = os.environ["DATADIR"] - MATCH_1 = os.environ["MATCH_1"] - MATCH_2 = os.environ["MATCH_2"] - MATCH_3 = os.environ["MATCH_3"] - MATCH_4 = os.environ["MATCH_4"] + MATCH_1, MATCH_2, MATCH_3, MATCH_4 = yarnlib.matches() new = { "type": "lorries", @@ -104,26 +101,22 @@ most of the configuration. ], } - filename = os.path.join(DATADIR, MATCH_2, MATCH_1) - with open(filename, "r") as f: - obj = json.load(f) + filename = os.path.join(yarnlib.DATADIR, MATCH_2, MATCH_1) + obj = yarnlib.load_json_from_file(filename) obj.append(new) - with open(filename, "w") as f: - json.dump(obj, f) + yarnlib.dump_json_to_file(obj, filename) ' Add a `troves` section to `lorry-controller.conf`. Again, we hardcode most of the configuration. IMPLEMENTS GIVEN (\S+) in (\S+) adds trove (\S+) + cd "$SRCDIR"/yarns.webapp python -c ' import os - import json - - DATADIR = os.environ["DATADIR"] - MATCH_1 = os.environ["MATCH_1"] - MATCH_2 = os.environ["MATCH_2"] - MATCH_3 = os.environ["MATCH_3"] + import yarnlib + + MATCH_1, MATCH_2, MATCH_3 = yarnlib.matches() new = { "type": "troves", @@ -134,93 +127,76 @@ most of the configuration. "prefixmap": {}, } - filename = os.path.join(DATADIR, MATCH_2, MATCH_1) - with open(filename, "r") as f: - obj = json.load(f) + filename = os.path.join(yarnlib.DATADIR, MATCH_2, MATCH_1) + obj = yarnlib.load_json_from_file(filename) obj.append(new) - with open(filename, "w") as f: - json.dump(obj, f, indent=4) + yarnlib.dump_json_to_file(obj, filename) ' Set the a specific field for all sections in a `lorry-controller.conf` file. IMPLEMENTS GIVEN (\S+) in (\S+) has (\S+) set to (.+) for everything + cd "$SRCDIR"/yarns.webapp python -c ' import os import json + import yarnlib - DATADIR = os.environ["DATADIR"] - MATCH_1 = os.environ["MATCH_1"] - MATCH_2 = os.environ["MATCH_2"] - MATCH_3 = os.environ["MATCH_3"] - MATCH_4 = os.environ["MATCH_4"] - - filename = os.path.join(DATADIR, MATCH_2, MATCH_1) + MATCH_1, MATCH_2, MATCH_3, MATCH_4 = yarnlib.matches() + + filename = os.path.join(yarnlib.DATADIR, MATCH_2, MATCH_1) - with open(filename, "r") as f: - obj = json.load(f) + obj = yarnlib.load_json_from_file(filename) for section in obj: section[MATCH_3] = json.loads(MATCH_4) - with open(filename, "w") as f: - json.dump(obj, f, indent=4) + yarnlib.dump_json_to_file(obj, filename) ' Set a specific field for a `troves` section. IMPLEMENTS GIVEN (\S+) in (\S+) sets (\S+) to (.+) for trove (\S+) + cd "$SRCDIR"/yarns.webapp python -c ' import os import json - - DATADIR = os.environ["DATADIR"] - MATCH_1 = os.environ["MATCH_1"] - MATCH_2 = os.environ["MATCH_2"] - MATCH_3 = os.environ["MATCH_3"] - MATCH_4 = os.environ["MATCH_4"] - MATCH_5 = os.environ["MATCH_5"] - - filename = os.path.join(DATADIR, MATCH_2, MATCH_1) + import yarnlib + + MATCH_1, MATCH_2, MATCH_3, MATCH_4, MATCH_5 = yarnlib.matches() - with open(filename, "r") as f: - obj = json.load(f) + filename = os.path.join(yarnlib.DATADIR, MATCH_2, MATCH_1) + + obj = yarnlib.load_json_from_file(filename) for section in obj: if section["type"] in ["trove", "troves"]: if section["trovehost"] == MATCH_5: section[MATCH_3] = json.loads(MATCH_4) - with open(filename, "w") as f: - json.dump(obj, f, indent=4) + yarnlib.dump_json_to_file(obj, filename) ' Set the prefixmap for a Trove in a Lorry Controller configuration file. Note that the Trove must already be in the configuration file. IMPLEMENTS GIVEN (\S+) in (\S+) has prefixmap (\S+):(\S+) for (\S+) + cd "$SRCDIR"/yarns.webapp python -c ' import os - import json + import yarnlib - DATADIR = os.environ["DATADIR"] - MATCH_1 = os.environ["MATCH_1"] - MATCH_2 = os.environ["MATCH_2"] - MATCH_3 = os.environ["MATCH_3"] - MATCH_4 = os.environ["MATCH_4"] - MATCH_5 = os.environ["MATCH_5"] + MATCH_1, MATCH_2, MATCH_3, MATCH_4, MATCH_5 = yarnlib.matches() - filename = os.path.join(DATADIR, MATCH_2, MATCH_1) - with open(filename, "r") as f: - objs = json.load(f) + filename = os.path.join(yarnlib.DATADIR, MATCH_2, MATCH_1) + objs = yarnlib.load_json_from_file(filename) for obj in objs: if obj["type"] == "troves" and obj["trovehost"] == MATCH_5: obj["prefixmap"][MATCH_3] = MATCH_4 - with open(filename, "w") as f: - json.dump(objs, f, indent=4) + yarnlib.dump_json_to_file(objs, filename) ' We need to be able to tell WEBAPP, when it runs, where the |