from collections.abc import Iterable, Iterator from cfg import CFG_ROOT from cfg.factory import cfg_data_factory from compose.factory import compose_factory, traefik_compose_factory from rendered.entity import Rendered from rendered.factory import rendered_factory from rendered.util import write from src_path.entity import src_paths_factory from template.factory import template_factory def load_all() -> Iterable[Rendered]: for dir in CFG_ROOT.iterdir(): paths = src_paths_factory(dir) cfg = cfg_data_factory(paths) parsed = compose_factory(cfg) for template in template_factory(parsed): yield rendered_factory(template) def render_all() -> Iterator[Rendered]: for rendered in load_all(): write(rendered) yield rendered if __name__ == "__main__": renders = render_all() traefik = traefik_compose_factory(renders) for template in template_factory(traefik): rendered = rendered_factory(template) write(rendered)