Just, Make, Shake
After many years of relying on GNU Make for automating project tasks,
we now primarily use just instead.
just
is better enough, and clean consolidated efficient project automation is so valuable, that this is worthwhile -
even though just
requires installing and lacks Make's file dependency tracking, for now.
Justfile
in the main repo's top directory is the starting point for scripts automating hledger project tasks.
Install and run just
to list them. I suggest using a shorter command alias j
. Eg:
$ alias j=just
$ j # list all scripts
$ j h test # list scripts mentioning "test"
Makefiles are still used in a number of subdirectories, like site/
and finance/
.
Shake
Shake.hs
in the main repo's top directory complements the Justfile.
Tasks requiring file dependencies and/or more complex code, such as building documentation and the web site,
are usually scripted here, often with a corresponding alias in Justfile
.
Eg:
$ ./Shake.hs # compile it for speed and git branch independence. Or: just Shake
$ ./Shake # list scripts
$ j site # runs the `just site` which calls `./Shake site` to do the work
$ j -n site # just --dry-run, show the commands that `just site` will run
tools
Additional helper scripts and tools are kept in the tools/
subdirectory.