mirror of
https://github.com/jbranchaud/til
synced 2026-01-03 15:18:01 +00:00
49 lines
1.4 KiB
Markdown
49 lines
1.4 KiB
Markdown
# Break Justfile Into Separate Hidden Steps
|
|
|
|
With `just` and a project's `justfile`, I can get a summary of the commands
|
|
available to run against my project by running `just --list`. If I try to
|
|
breakdown a complex, multi-step command into separate `just` commands, it will
|
|
be nice for organization, but it will clutter the list output. I can mark
|
|
specific commands as hidden or internal by preceding them with an underscore
|
|
(`_`).
|
|
|
|
Here is a `justfile` from one of my projects that only lists a single command
|
|
`setup` which itself is supported by three internal commands: `_check-brew`,
|
|
`_install-deps`, and `_install-go-tools`.
|
|
|
|
```justfile
|
|
# Install all required development dependencies
|
|
setup: _check-brew _install-deps _install-go-tools
|
|
|
|
# Check if brew is installed
|
|
_check-brew:
|
|
#!/usr/bin/env bash
|
|
if ! command -v brew &> /dev/null; then
|
|
echo "Error: Homebrew is not installed"
|
|
echo "Please install from https://brew.sh"
|
|
exit 1
|
|
fi
|
|
|
|
brew_deps := '''
|
|
go
|
|
sqlite3
|
|
'''
|
|
|
|
# Install brew dependencies
|
|
_install-deps:
|
|
#!/usr/bin/env bash
|
|
deps=$(echo '{{brew_deps}}' | tr -s '[:space:]' ' ' | xargs)
|
|
for pkg in $deps; do
|
|
if ! brew list $pkg &>/dev/null; then
|
|
echo "Installing $pkg..."
|
|
brew install $pkg
|
|
else
|
|
echo "✓ $pkg already installed"
|
|
fi
|
|
done
|
|
|
|
# Install Go development tools
|
|
_install-go-tools:
|
|
go install github.com/pressly/goose/v3/cmd/goose@latest
|
|
```
|