GitXplorerGitXplorer
j

scripts-to-rule-them-all

public
51 stars
3 forks
0 issues

Commits

List of commits on branch main.
Verified
39555f3a2b7a932f7782b53e5c01c9f56f087618

:tractor: Fixe docs recipes name

jjefftriplett committed 2 months ago
Verified
b7786fb6f6b9b8ea90ff9170e0daf50e5cdae542

:arrow_up: Update actions.yml

jjefftriplett committed 2 months ago
Verified
dbd6821b4a5eed2e17c2bd26c8c3754ded6ba9bb

:pencil: Updates README

jjefftriplett committed a year ago
Verified
350b2e67528f8606e5034f5b801b7dfff4e2d074

:sparkles: Adds format alias of fmt

jjefftriplett committed a year ago
Verified
ab165c0ea448a0a418742f7b1af4b68ad84a7764

:tractor: Updates justfile to show a more useful example

jjefftriplett committed a year ago
Verified
362c983a01001b9b151f7b021e174639725fdcdc

:pencil: Updates README recipe docs

jjefftriplett committed 2 years ago

README

The README file for this repository.

Scripts To Rule Them All

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
    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

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 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

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:
    pipx run --spec 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:
    pipx run --spec 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"

Resources