38 @brief Write revision metadata and load it on every generated HTML page.
39 @return Process status code.
43 html_dir = args.html_dir.resolve()
44 if not html_dir.is_dir():
45 raise SystemExit(f
"HTML directory does not exist: {html_dir}")
47 remote =
git_output(
"remote",
"get-url",
"origin")
48 if remote.startswith(
"git@github.com:"):
49 remote =
"https://github.com/" + remote[len(
"git@github.com:"):]
50 if remote.endswith(
".git"):
54 "short_sha": sha[:12],
55 "commit_url": f
"{remote}/commit/{sha}",
56 "clean":
not bool(
git_output(
"status",
"--porcelain")),
58 (html_dir /
"picurv-docs-revision.js").write_text(
59 "window.PICURV_DOCS_REVISION = " + json.dumps(revision, sort_keys=
True) +
";\n",
62 for page
in html_dir.rglob(
"*.html"):
63 relative = page.relative_to(html_dir)
64 script_path =
"../picurv-docs-revision.js" if relative.parts[0] ==
"search" else "picurv-docs-revision.js"
65 content = page.read_text(encoding=
"utf-8")
66 if "picurv-docs-revision.js" not in content:
67 content = content.replace(
"</head>", f
'<script src="{script_path}"></script>\n</head>')
68 page.write_text(content, encoding=
"utf-8")
69 print(f
"Stamped generated documentation through commit {sha}.")