Scripts To Rule Them All
July 3, 2025 · View on GitHub
This is a WIP repo to form some opinions on my own version of the "Scripts To Rule Them All" standard for my projects.
I'm using just instead of Make or external files because it fits my brain better.
It also allows me to avoid make vs. gmake differences.
When my just recipes get too large, I turn them into an external file stored in a scripts folder, and I call them from a just recipe.
This can be scripts/bootstrap.sh or scripts/bootstrap.py, depending on which language the recipe is written in.
Usage
❯ just
Available recipes:
bootstrap *ARGS # installs/updates all dependencies
check # run '--fmt' in "check" mode.
cibuild # invoked by continuous integration servers to run tests
console # opens a console
docs # updates our README when justfile changes
fmt # format and overwrite justfile [alias: format]
lint # check/lint our project
server # starts app
setup # sets up a project to be used for the first time
test # runs tests
update # updates a project to run at its current version
Summary view
The summary view might be nice for linting or scripting to see what options are available with less parsing.
❯ just --summary
bootstrap check cibuild console docs fmt lint server setup test update
Recipes
bootstrap recipe
$ just bootstrap
source
# installs/updates all dependencies
bootstrap *ARGS:
#!/usr/bin/env bash
set -euo pipefail
# we use cogapp to update our README
pip install --upgrade pip uv
check recipe
$ just check
source
# run '--fmt' in "check" mode.
@check:
just --check --fmt --unstable
cibuild recipe
$ just cibuild
source
# invoked by continuous integration servers to run tests
@cibuild:
echo "TODO: cibuild"
console recipe
$ just console
source
# opens a console
@console:
echo "TODO: console"
docs recipe
$ just docs
source
# updates our README when justfile changes
@docs:
uvx --from cogapp cog -r README.md
fmt recipe
$ just fmt
source
# format and overwrite justfile
@fmt:
just --fmt --unstable
lint recipe
$ just lint
source
# check/lint our project
@lint:
uvx --from cogapp cog --check README.md
server recipe
$ just server
source
# starts app
@server:
echo "TODO: server"
setup recipe
$ just setup
source
# sets up a project to be used for the first time
@setup:
echo "TODO: setup"
test recipe
$ just test
source
# runs tests
@test:
echo "TODO: test"
update recipe
$ just update
source
# updates a project to run at its current version
@update:
echo "TODO: update"