Terminal output to the browser

ansi2html

Drew Devault uses ani2html in builds.sr.ht, the continuous integration system/app that is part of the SourceHut suite. builds.sr.ht generates terminal output using jinja templates and a relatively small python library called ansi2html. It is already packaged by guix upstream as python-ansi2html (It could use an update).

https://github.com/pycontribs/ansi2html

https://pypi.org/project/ansi2html/

Here are two examples of it in action at builds.sr.ht:

https://builds.sr.ht/~sircmpwn/job/610711

https://builds.sr.ht/~sircmpwn/job/611028

And, the relevant places in the builds.sr.ht code base:

https://git.sr.ht/~sircmpwn/builds.sr.ht/tree/master/item/buildsrht/templates/job.html#L117

https://git.sr.ht/~sircmpwn/builds.sr.ht/tree/master/item/buildsrht/blueprints/jobs.py#L333

Here's a diagram showing how it will integrate with binderlite.

binderlite_ansi2html_terminal_diagram.png

ansi2html lets us send terminal output to the browser without depending on javascript libraries. However, the downside is that it cannot "stream" terminal output to the browser as it is generated. The only way to get the latest terminal output is to reload the page.