Ninja is a surprisingly nice build system for tiny projects. That’s more or less the opposite of what it’s designed for, but it works really well for tiny things – things that are small enough that you can just create the little build file by hand. You just need to install it (you can just put the binary on the $PATH somewhere), then create a ninja.build
file in your folder. Here’s an example that published a couple of AsciiDoc files and re-built the index if any of the pages changed:
opts = -a source-highlighter=rouge -a rouge-style=monokai -r asciidoctor-html5s -b html5s
rule adoc
command = asciidoctor $opts $in -o $out
build out/page1.html: adoc src/page1.adoc
build out/page2.html: adoc src/page2.adoc
build out/index.html: adoc src/index.adoc | src/page1.adoc src/page2.adoc
It’s super fast, incremental & idempotent – just re-run it and it’ll just redo anything that needs doing – and nothing that doesn’t.