diff options
Diffstat (limited to 'build.py')
| -rw-r--r-- | build.py | 75 |
1 files changed, 0 insertions, 75 deletions
diff --git a/build.py b/build.py deleted file mode 100644 index 17ac932..0000000 --- a/build.py +++ /dev/null @@ -1,75 +0,0 @@ -import yaml - -from jinja2 import Environment, PackageLoader, select_autoescape -from os import listdir, mkdir -from pathlib import Path -from shutil import copyfile -from unidecode import unidecode - -ROOT_PATH = Path(__file__).parent - -NAMES_DIR = ROOT_PATH / "names" -BUILD_DIR = ROOT_PATH / "build" -STATIC_DIR = ROOT_PATH / "static" - -REQUIRED_FIELDS = set(["domain", "name"]) -OPTIONAL_FIELDS = set(["url", "title", "email", "github", "candidate", "invalid"]) - -TEMPLATES = ["index.html"] - -# copy static files -if not BUILD_DIR.exists(): - mkdir(BUILD_DIR) -for f in listdir(STATIC_DIR): - copyfile(STATIC_DIR / f, BUILD_DIR / f) - -# process all name yamls -names = [] -candidates = [] - -for name in listdir(NAMES_DIR): - with open(NAMES_DIR / name, "r") as f: - fields = yaml.load(f.read(), Loader=yaml.Loader) - field_set = set(fields.keys()) - - missing_fields = REQUIRED_FIELDS - field_set - if missing_fields: - raise Exception(f"Missing required fields {missing_fields} in {name}") - - invalid_fields = field_set - OPTIONAL_FIELDS - REQUIRED_FIELDS - if invalid_fields: - raise Exception(f"Invalid fields {invalid_fields} in {name}") - - if fields.get("invalid"): - continue - - if fields.get("candidate"): - candidates.append(fields) - else: - names.append(fields) - -names = list(sorted(names, key=lambda x: x["domain"])) -candidates = list(sorted(candidates, key=lambda x: x["domain"])) - - -def render_link(value, classes): - name = unidecode(value["name"]).lower().split(" ") - domain = unidecode(value["domain"]).replace(".", "") - res = [] - for part in name: - if part == domain: - url = value.get("url") or "https://" + value.get("domain") - res.append(f'<a href="{url}" class="{classes}">{value["domain"]}</a>') - else: - res.append(part) - return " ".join(res) - - -# render templates -env = Environment(loader=PackageLoader("build"), autoescape=select_autoescape()) -env.filters["render_link"] = render_link -for template in TEMPLATES: - t = env.get_template(template) - index = t.render(names=names, candidates=candidates) - with open(BUILD_DIR / "index.html", "w") as f: - f.write(index) |
