#!/usr/bin/env python
"""Regenerate all templated documentation pages."""

import sys
from pathlib import Path

import requests
from gen_credits_data import get_data as get_credits
from gen_readme_data import get_data as get_readme
from jinja2 import StrictUndefined
from jinja2.exceptions import TemplateError
from jinja2.sandbox import SandboxedEnvironment

URL_PREFIX = "https://raw.githubusercontent.com/pawamoy/jinja-templates/master/"
REGEN = [
    ("docs/credits.md", get_credits, URL_PREFIX + "credits.md"),
    ("docs/index.md", get_readme, "scripts/templates/README.md"),
]


def main():
    """Regenerate pages listed in global `REGEN` list."""
    env = SandboxedEnvironment(undefined=StrictUndefined)
    for target, get_data, template in REGEN:
        print("Regenerating", target)
        data = get_data()
        if Path(template).exists():
            with open(template) as fd:
                template_text = fd.read()
        else:
            template_text = requests.get(template).text
        try:
            rendered = env.from_string(template_text).render(**data)
        except TemplateError as error:
            print("Error while regenerating", target)
            print(error)
            return 1
        with open(target, "w") as target:
            target.write(rendered)
    return 0


if __name__ == "__main__":
    sys.exit(main())