Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ and Base versions are tracked in the repo-root `VERSION` file.
logs.
- Added `basectl workspace status` as the first read-only workspace-level
project health summary.
- Added `bootstrap.sh` as a first-mile macOS bootstrapper for installing
Homebrew, Git, Bash, and Base before handing off to `basectl`.

### Fixed

Expand Down
49 changes: 41 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,28 +31,40 @@ are tracked in [CHANGELOG.md](CHANGELOG.md).

## Start Here

Install Base through Homebrew:
On a new macOS machine, start with the first-mile bootstrap script:

```bash
brew install codeforester/base/base
basectl setup
basectl update-profile
exec "$SHELL" -l
curl -fsSL https://raw.githubusercontent.com/codeforester/base/master/bootstrap.sh | bash
```

The bootstrapper installs Homebrew, Git, and a supported Bash when needed,
chooses an existing Base install when one is present, otherwise defaults to a
source checkout at `~/work/base`, and prints the exact `basectl setup` and
`basectl update-profile` commands to finish the installation.

Choose an install mode explicitly when needed:

```bash
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 -- --brew
```

For Homebrew installs, Base itself lives under Homebrew's prefix rather than in
your project workspace. If your repositories live under a shared directory such
as `~/work`, set the workspace root in `~/.base.d/config.yaml`:
as `~/work`, set the workspace root in `~/.base.d/config.yaml` after running
`basectl setup`:

```yaml
workspace:
root: ~/work
```

Or install from the repository:
Or install directly through Homebrew when Homebrew is already available:

```bash
curl -fsSL https://raw.githubusercontent.com/codeforester/base/master/install.sh | bash
brew install codeforester/base/base
basectl setup
basectl update-profile
exec "$SHELL" -l
```

Expand Down Expand Up @@ -591,6 +603,27 @@ is requested on macOS, Base warns if `osascript` is not available.

## Installation Details

For a blank macOS machine, use `bootstrap.sh`:

```bash
curl -fsSL https://raw.githubusercontent.com/codeforester/base/master/bootstrap.sh | bash
```

The bootstrapper is intentionally small. It verifies macOS, installs Homebrew
when missing, installs Git and Bash through Homebrew when needed, then installs
Base through either a source checkout or Homebrew. It does not edit shell startup
files automatically. Instead, it prints the exact follow-up commands, typically:

```bash
~/work/base/bin/basectl setup
~/work/base/bin/basectl update-profile
exec "$SHELL" -l
```

Pass `--source` or `--brew` with `bash -s --` to choose the route explicitly.
Without an explicit choice, the bootstrapper preserves an existing Homebrew Base
install, then an existing source checkout, and otherwise defaults to source mode.

Base can be installed through its Homebrew tap:

```bash
Expand Down
1 change: 1 addition & 0 deletions bin/base-test
Original file line number Diff line number Diff line change
Expand Up @@ -23,5 +23,6 @@ bats \
lib/bash/version/tests/lib_version.bats \
lib/shell/completions/tests/completions.bats \
tests/base_init.bats \
tests/bootstrap.bats \
tests/install.bats \
tests/integration/base_workflows.bats
Loading
Loading