Source code for sphinx_terminhtml.assets
import os
import tempfile
from pathlib import Path
import requests
from pydantic import BaseModel
from sphinx.application import Sphinx
from sphinx.util.fileutil import copy_asset
from terminhtml.main import TerminHTML, CommandResults
JS_BASE_URL = "https://unpkg.com/@terminhtml/bootstrap@1.x/dist/"
js_file_name = "@terminhtml-bootstrap.umd.js"
js_file_url = f"{JS_BASE_URL}{js_file_name}"
js_source_map_file_name = "@terminhtml-bootstrap.umd.js.map"
js_source_map_file_url = f"{JS_BASE_URL}{js_source_map_file_name}"
css_file_name = "ansi2html.css"
[docs]def download_and_copy_asset_files(app: Sphinx, exc):
    if exc is not None:
        # Build failed, don't copy assets
        return
    js_content = requests.get(js_file_url).text
    js_source_map_content = requests.get(js_source_map_file_url).text
    css_content = TerminHTML(command_results=CommandResults(results=[])).styles
    with tempfile.TemporaryDirectory() as tmp_dir:
        tmp_js_path = Path(tmp_dir) / js_file_name
        tmp_js_path.write_text(js_content)
        tmp_js_source_map_path = Path(tmp_dir) / js_source_map_file_name
        tmp_js_source_map_path.write_text(js_source_map_content)
        tmp_css_path = Path(tmp_dir) / css_file_name
        tmp_css_path.write_text(css_content)
        # Copy asset files
        copy_asset(str(tmp_js_path), os.path.join(app.outdir, "_static"))
        copy_asset(str(tmp_js_source_map_path), os.path.join(app.outdir, "_static"))
        copy_asset(str(tmp_css_path), os.path.join(app.outdir, "_static")) 
[docs]def register_assets(app: Sphinx):
    app.connect("build-finished", download_and_copy_asset_files)
    app.add_js_file(js_file_name)
    app.add_js_file(js_source_map_file_name)
    app.add_css_file(css_file_name)