The whole point of this job is that a new engineer’s first command is meriadoc job onboard, not “read the wiki page that’s three versions out of date.” on_failure.continue: true on the install job means one failed install (say, a cask that needs manual approval) doesn’t block the rest — the new hire sees exactly which step to retry, instead of a wall of setup instructions with no feedback on what’s actually done.
version: v1
tasks:
install-homebrew:
description: "Install Homebrew"
cmds:
- command -v brew || /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
install-git-tools:
description: "Install git, GitHub CLI, and git-lfs"
cmds:
- brew install git gh git-lfs
- git lfs install
install-node:
description: "Install Node.js via NVM"
cmds:
- curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
- export NVM_DIR="$HOME/.nvm" && [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" && nvm install $NODE_VERSION
env:
NODE_VERSION:
type: string
default: "20"
configure-git:
description: "Set global Git identity"
cmds:
- git config --global user.name "$GIT_NAME"
- git config --global user.email "$GIT_EMAIL"
- git config --global init.defaultBranch main
env:
GIT_NAME:
type: string
required: true
GIT_EMAIL:
type: string
required: true
clone-repos:
description: "Clone the team's repositories"
cmds:
- mkdir -p ~/work
- cd ~/work && gh repo clone $ORG/frontend || true
- cd ~/work && gh repo clone $ORG/backend || true
env:
ORG:
type: string
default: "mycompany"
jobs:
onboard:
description: "Full new-hire environment setup"
tasks:
- install-homebrew
- install-git-tools
- install-node
- configure-git
- clone-repos
on_failure:
continue: true
cmds:
- echo "Some steps failed — check the output above and re-run them individually with 'meriadoc task <name>'."
Run it:
meriadoc job onboard --env GIT_NAME="Jane Doe" --env GIT_EMAIL=jane@mycompany.com