| #!/usr/bin/env python |
| |
| from string import Template |
| import argparse |
| import os |
| import sys |
| |
| def key(v): |
| if v == "master": |
| return sys.maxsize |
| if v == "stable": |
| return sys.maxsize - 1 |
| if v == "beta": |
| return sys.maxsize - 2 |
| if v == "pre-1.29.0": |
| return -1 |
| if not v.startswith("rust-"): |
| return None |
| |
| v = v.replace("rust-", "") |
| |
| s = 0 |
| for i, val in enumerate(v.split(".")[::-1]): |
| s += int(val) * 100**i |
| |
| return s |
| |
| def main(): |
| parser = argparse.ArgumentParser() |
| parser.add_argument("input", help="path to the versions.html template", type=argparse.FileType("r")) |
| parser.add_argument("outdir", help="path to write the output HTML") |
| args = parser.parse_args() |
| |
| versions = [ |
| dir |
| for dir in os.listdir(args.outdir) |
| if key(dir) is not None |
| ] |
| versions.sort(key=key, reverse=True) |
| links = [f'<a class="list-group-item" href="./{version}/index.html">{version}</a>' for version in versions] |
| |
| template = Template(args.input.read()) |
| html = template.substitute(list="\n".join(links)) |
| |
| path = os.path.join(args.outdir, "index.html") |
| with open(path, "w") as out: |
| out.write(html) |
| print(f"wrote HTML to {path}") |
| |
| if __name__ == "__main__": |
| main() |