Render README.org as HTML on Sourcehut
Out of the box, Sourcehut only renders README
, README.md
, and
README.markdown
. The maintainers have denied multiple requests to
render Org mode README files by default.1
Workarounds to render README.org
One proposed workaround is to export README.org
to README.md
(in a
git hook), and then commit README.md
, which will be rendered as HTML
on git.sr.ht
. Another option is to set a custom README.
Here's how we render the README for hyperdrive.el on git.sr.ht by setting a custom README:
Makefile + build script
The Elisp for exporting README.org
to HTML goes in a Makefile, which
simplifies the packaging process, since there's no extra .el
file
for linters and compilers to complain about. Credit for the idea to
use a Makefile goes to Jonas Bernoulli.
Add a file called Makefile
at the root of your project
(hyperdrive.el Makefile):
EMACS := emacs EMACSQ := $(EMACS) -Q BATCH := $(EMACSQ) --batch \ --eval '(setq vc-handled-backends nil)' \ --eval '(setq org-startup-folded nil)' \ --eval '(setq org-element-cache-persistent nil)' \ --eval '(setq gc-cons-threshold (* 50 1000 1000))' README.html: README.org $(BATCH) --find-file $< --eval "(require 'ox-html)" \ --eval '(org-html-export-to-html nil nil nil t)'
The build script installs hut
and emacs
, clones your repo, exports
README.html
, and sets the custom README. Add a file called
readme.yml
in the .builds/
subdirectory of your project
(hyperdrive.el .builds/readme.yml):
image: archlinux oauth: git.sr.ht/REPOSITORIES:RW git.sr.ht/PROFILE:RO packages: - hut - emacs-nox sources: - https://git.sr.ht/~ushin/hyperdrive.el tasks: - update-readme: | cd hyperdrive.el make README.html hut git update --readme README.html
I hope this helps you. Feel free to contact me with suggestions, corrections, or questions!
Acknowledgements
Thank you to Thorben Günther, for this example git repo which shows how to set a custom README.