prjpeppercorn/tools/html_all.py

74 lines
2.6 KiB
Python

#!/usr/bin/env python3
#
# prjpeppercorn -- GateMate FPGAs Bitstream Documentation and Tools
#
# Copyright (C) 2024 The Project Peppercorn Authors.
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#
import os, time
from os import path
from string import Template
import html_tilegrid
import shutil
import chip
GM_DOCS_INDEX = """
<html>
<head>
<title>Project Peppercorn HTML Documentation</title>
</head>
<body>
<h1>Project Peppercorn HTML Documentation</h1>
<p>Project Peppercorn is a project to document the GateMate bitstream and internal architecture.</p>
<p>This repository contains HTML documentation automatically generated from the
<a href="https://github.com/YosysHQ/prjpeppercorn">Project Peppercorn</a> database.
Data generated includes tilemap data and bitstream data for many tile types. Click on any tile to see its bitstream
documentation.
</p>
<hr/>
$docs_toc
<hr/>
<p>Licensed under a very permissive <a href="COPYING">CC0 1.0 Universal</a> license.</p>
</body>
</html>
"""
def main():
shutil.rmtree("work_html", ignore_errors=True)
os.mkdir("work_html")
commit_hash = "" #database.get_db_commit()
build_dt = time.strftime('%Y-%m-%d %H:%M:%S')
docs_toc = ""
family = "CCGM1"
print("Family: " + family)
docs_toc += f"<h3>{family.upper()} Family</h3>"
docs_toc += "<h4>Bitstream Documentation</h4>"
docs_toc += "<ul>"
for device in chip.get_all_devices():
print("Device: " + device)
docs_toc += f'<li><a href="{device}.html">{device} Documentation</a></li>'
html_tilegrid.main(["html_tilegrid", family, device, path.join("work_html",device + ".html")])
docs_toc += "</ul>"
index_html = Template(GM_DOCS_INDEX).substitute(
datetime=build_dt,
commit=commit_hash,
docs_toc=docs_toc
)
with open(path.join("work_html", "index.html"), 'w') as f:
f.write(index_html)
if __name__ == "__main__":
main()