diff --git a/requirements.txt b/requirements.txt index 13d6749..645357c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,4 @@ PyYAML==6.0.3 requests==2.32.5 Jinja2==3.1.6 +GitPython==3.1.45 diff --git a/tools/render b/tools/render index a6f991c..4150951 100755 --- a/tools/render +++ b/tools/render @@ -6,15 +6,25 @@ import functools import json import pathlib +import git import requests import yaml from jinja2 import Environment, FileSystemLoader, StrictUndefined, Template -NODES = pathlib.Path("nodes") -SCHEMATICS = pathlib.Path("schematics") -RENDERED = pathlib.Path("rendered") -PATCHES = Environment(loader=FileSystemLoader("patches"), undefined=StrictUndefined) -TEMPLATES = Environment(loader=FileSystemLoader("templates"), undefined=StrictUndefined) +REPO = git.Repo(".", search_parent_directories=True) +assert REPO.working_dir is not None + +ROOT = pathlib.Path(REPO.working_dir) + +NODES = ROOT.joinpath("nodes") +SCHEMATICS = ROOT.joinpath("schematics") +RENDERED = ROOT.joinpath("rendered") +PATCHES = Environment( + loader=FileSystemLoader(ROOT.joinpath("patches")), undefined=StrictUndefined +) +TEMPLATES = Environment( + loader=FileSystemLoader(ROOT.joinpath("templates")), undefined=StrictUndefined +) def node_encoder(node: dict): @@ -112,7 +122,7 @@ def main(): # Quick and dirty way to resolve all the templates using a custom encoder final_nodes.append(json.loads(json.dumps(node, cls=node_encoder(node)))) - with open("config.yaml") as fyaml: + with open(ROOT.joinpath("config.yaml")) as fyaml: config = yaml.safe_load(fyaml) RENDERED.mkdir(exist_ok=True)