Soupault 1.9.0 release
Soupault 1.9.0 is available for download
or installation from the opam repository.
It now offers a
--index-only option for people who want to extract site metadata to JSON
and stop at that. There are also multiple improvements in the plugin API and the
preprocess_element widget support,
as well as bug fixes.
Verifying release integrity
Since 1.9.0, soupault uses minisign rather than PGP for release signing. If you are new to signify/minisign, you should read signify: Securing OpenBSD From Us To You paper by Ted Unangst. There's much less overhead compared to PGP, and the keys are much shorter due to less metadata embedded in them and use of newer elliptic curve algorithms.
You can verify the releases using this key:
minisign -Vm soupault-1.9.0-win32.zip -P RWRfW+gkhk/+iA7dOUtTio6G6KeJCiAEp4Zfozw7eqv2shN90+5z20Cy
If you have any doubts about the authenticity of the key, feel free to contact me directly.
There's now a
--index-only option that makes soupault stop at metadata extraction. It just dumps the index data
to a JSON file specified in the
dump_json option, but doesn't generate any pages.
It will run widgets that are supposed to run before the index extraction though, if you've configured the
extract_after_widgets option (the reading time plugin on this site is a good example of why this may be needed—that widget
must run before metadata extraction so that the reading time can appear in the blog index page).
There are two use cases for this. First, it may be useful for people who want to generate an index page or an RSS/Atom/JSONFeed
for a handwritten website. Second, it can be a step in a TeX-like workflow. Since soupault doesn't create page files on principle,
the intended way to generate a blog archive or a list of all pages is to export the metadata to JSON and run it through
a script that makes pages, then run soupault again to assemble a complete website. With
--index-only, you can make
that process faster.
Limiting index extraction to some pages or sections
Likewise, you can also limit index extraction to a specific build profile.
Multiple selectors for
It's now possible to use a list of selectors with
preprocess_element widgets, to avoid redundancy in the configs.
[widgets.syntax-highlight] widget = "preprocess_element" selector = ["code", "pre"] ...
New plugin functions
It's now possible to extend soupault with plugins, external programs, or plugins that run external programs.
Specifically, there are now
Sys.get_program_output functions that you
can use in your plugins. It doesn't add much more expressive power, but it can make some things easier.
For example, I use it in a plugin that takes a page modification date from git unless that page has a handwritten
There are also functions for easily accessing children, descendants, and siblings of an element, functions for deleting and cloning element content, and a few more convenience functions.
title widget correctly removes all HTML tags from the title string (if there are any). It also doesn't add extra whitespace anymore.
Both fixes were made by Thomas Letan.
CSS selector syntax errors are now handled gracefully. That took a pull request to lambdasoup.