56 lines
1.4 KiB
Python
Executable File
56 lines
1.4 KiB
Python
Executable File
# !/usr/bin/env python
|
|
|
|
from pathlib import Path
|
|
import argparse
|
|
|
|
from jinja2 import Environment, FileSystemLoader
|
|
|
|
|
|
REPOSITORY_PATH = Path(__file__).parent.parent
|
|
|
|
# Argument parsing.
|
|
parser = argparse.ArgumentParser(prog="Seafile Docker client documentation renderer")
|
|
parser.add_argument("template", type=str)
|
|
args = parser.parse_args()
|
|
|
|
# Setup Jinja2 templater
|
|
documentations_path = REPOSITORY_PATH.joinpath("documentations")
|
|
loader = FileSystemLoader(documentations_path)
|
|
environment = Environment(loader=loader)
|
|
template = environment.get_template(args.template)
|
|
|
|
|
|
buffer=[]
|
|
for path in Path("versions").iterdir():
|
|
with open(path, "rt") as fo:
|
|
buffer.append(fo.read().strip())
|
|
buffer.sort(reverse=True)
|
|
|
|
# Prepare the render context.
|
|
latest = True
|
|
versions = []
|
|
for line in buffer:
|
|
version = line.strip()
|
|
parts = version.split(".")
|
|
increments = []
|
|
blocks = []
|
|
for part in parts:
|
|
increments.append(part)
|
|
section = ".".join(increments)
|
|
blocks.append(f"`{section}`")
|
|
if latest:
|
|
blocks.append("`latest`")
|
|
latest = False
|
|
versions.append(blocks)
|
|
|
|
# Render
|
|
# TODO: read and adapt the CHANGELOG and insert into the render.
|
|
content = template.render(versions=versions)
|
|
#content = template.render() # When version/ is unavailable.
|
|
filename = Path(args.template).with_suffix("")
|
|
document = documentations_path.joinpath(filename)
|
|
|
|
# Write to file
|
|
with open(document, mode="w") as fo:
|
|
fo.write(content)
|