diff --git a/README.md b/README.md index a8d1879..a7e85c8 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ pairing with smart people at Hashrocket. For a steady stream of TILs, [sign up for my newsletter](https://crafty-builder-6996.ck.page/e169c61186). -_1550 TILs and counting..._ +_1551 TILs and counting..._ --- @@ -1785,6 +1785,7 @@ _1550 TILs and counting..._ - [Add Subtitles To Existing Mux Video Asset](workflow/add-subtitles-to-existing-mux-video-asset.md) - [Access 1Password Credential From CLI](workflow/access-1password-credential-from-cli.md) - [Allow Key-Repeating With Cursor](workflow/allow-key-repeating-with-cursor.md) +- [Break Justfile Into Separate Hidden Steps](workflow/break-justfile-into-separate-hidden-steps.md) - [Change Window Name In iTerm](workflow/change-window-name-in-iterm.md) - [Configure Email Redirect With Cloudflare](workflow/configure-email-redirect-with-cloudflare.md) - [Convert An ePub Document To PDF On Mac](workflow/convert-an-epub-document-to-pdf-on-mac.md) diff --git a/workflow/break-justfile-into-separate-hidden-steps.md b/workflow/break-justfile-into-separate-hidden-steps.md new file mode 100644 index 0000000..c7c5c02 --- /dev/null +++ b/workflow/break-justfile-into-separate-hidden-steps.md @@ -0,0 +1,48 @@ +# 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 +```