bootstrap.sh is Base's preferred entry point for a new or uncertain macOS
machine. It handles the minimum prerequisites needed before basectl can take
over: Homebrew, Git, Bash 4.2+, and either a source checkout or Homebrew
installation of Base.
Run the bootstrapper from GitHub:
curl -fsSL https://raw.githubusercontent.com/codeforester/base/master/bootstrap.sh | bashThe bootstrapper verifies macOS, installs missing first-mile prerequisites, and then prints the exact commands needed to finish setup. For the default source checkout path, the handoff usually looks like:
~/work/base/bin/basectl setup
~/work/base/bin/basectl update-profile
exec "$SHELL" -lbootstrap.sh does not edit shell startup files automatically. Shell profile
integration remains an explicit basectl update-profile step so the user can
see what was installed before Base changes future interactive shells.
Choose a mode explicitly when the default should not infer one:
curl -fsSL https://raw.githubusercontent.com/codeforester/base/master/bootstrap.sh | bash -s -- --source
curl -fsSL https://raw.githubusercontent.com/codeforester/base/master/bootstrap.sh | bash -s -- --brewWithout an explicit mode, bootstrap uses this order:
BASE_BOOTSTRAP_MODE- an existing Homebrew-installed Base formula
- an existing source checkout
- source mode at
~/work/base
This keeps an existing Homebrew install from being silently displaced by a
source checkout. Homebrew and source installs can coexist; the active basectl
is whichever executable the shell finds first on PATH.
bootstrap.sh --source
bootstrap.sh --brew
bootstrap.sh --install-dir ~/work/base
bootstrap.sh --repo-url https://github.com/codeforester/base.git
bootstrap.sh --branch <name>
bootstrap.sh --no-homebrew-install
bootstrap.sh --dry-runUse --dry-run to inspect the planned prerequisite installs and Base install
route without changing the machine.
Contributors should prefer source mode:
curl -fsSL https://raw.githubusercontent.com/codeforester/base/master/bootstrap.sh | bash -s -- --source
~/work/base/bin/basectl setup --profile dev
~/work/base/bin/basectl update-profile
exec "$SHELL" -lThe dev profile installs contributor prerequisites such as BATS, the GitHub
CLI, and ShellCheck. After that, use basectl test base for the dogfood test
contract.
Named profiles compose when a contributor also wants site-reliability tools:
~/work/base/bin/basectl setup --profile dev,sreThe sre profile installs local diagnostic tools only. It does not configure
cloud accounts, kube contexts, credentials, or production access.
Use bootstrap.sh when the machine may not have Homebrew, Git, or a supported
Bash yet.
Use Homebrew directly when Homebrew is already installed and Base should be managed like a normal formula:
brew install codeforester/base/base
basectl setup
basectl update-profileUse install.sh when you specifically want the source-install script to clone
or update Base and run setup/profile commands in one path. bootstrap.sh is the
more complete first-mile path for blank machines.
bootstrap.sh is intentionally small. It does not configure project
repositories, install project dependencies, manage IDE settings, or update shell
startup files. Those steps belong to basectl setup, basectl repo,
basectl update-profile, and the project manifest workflow.