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.
❯ 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
format # alias for `fmt`
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
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
$ 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 cogapp
# setup our project defaults if they exist
if [ ! -f ".env" ]; then
echo ".env created"
cp .env.example .env
fi
if [ ! -f "docker-compose.override.yml" ]; then
echo "docker-compose.override.yml created"
cp docker-compose.override.yml.example docker-compose.override.yml
fi
# [ ] uncomment if we are using Docker
# docker-compose {{ ARGS }} build --force-rm
# [ ] uncomment if we are using pre-commit
# python -m pip install --upgrade pre-commit
$ just check
source
# run '--fmt' in "check" mode.
@check:
just --check --fmt --unstable
$ just cibuild
source
# invoked by continuous integration servers to run tests
@cibuild:
echo "TODO: cibuild"
$ just console
source
# opens a console
@console:
echo "TODO: console"
$ just docs
source
# updates our README when justfile changes
@docs:
pipx run --spec cogapp cog -r README.md
$ just fmt
source
# format and overwrite justfile
@fmt:
just --fmt --unstable
$ just lint
source
# check/lint our project
@lint:
pipx run --spec cogapp cog --check README.md
$ just server
source
# starts app
@server:
echo "TODO: server"
$ just setup
source
# sets up a project to be used for the first time
@setup:
echo "TODO: setup"
$ just test
source
# runs tests
@test:
echo "TODO: test"
$ just update
source
# updates a project to run at its current version
@update:
echo "TODO: update"