56 lines
1.5 KiB
Bash
56 lines
1.5 KiB
Bash
|
|
#!/usr/bin/env bash
|
||
|
|
|
||
|
|
set -euo pipefail
|
||
|
|
|
||
|
|
SCRIPT_NAME="$(basename "$0")"
|
||
|
|
LOG_FILE="${HOME}/.setup-dev-station.log"
|
||
|
|
|
||
|
|
log() {
|
||
|
|
printf '[%s] %s\n' "${SCRIPT_NAME}" "$*" | tee -a "${LOG_FILE}"
|
||
|
|
}
|
||
|
|
|
||
|
|
if [[ "$(uname -s)" != "Darwin" ]]; then
|
||
|
|
log "This script is for macOS only."
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
log "Starting macOS bootstrap for dev station prerequisites."
|
||
|
|
|
||
|
|
if ! xcode-select -p >/dev/null 2>&1; then
|
||
|
|
log "Installing Xcode Command Line Tools (follow GUI prompt once)."
|
||
|
|
xcode-select --install || true
|
||
|
|
else
|
||
|
|
log "Xcode Command Line Tools already installed."
|
||
|
|
fi
|
||
|
|
|
||
|
|
if ! command -v brew >/dev/null 2>&1; then
|
||
|
|
log "Installing Homebrew."
|
||
|
|
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
||
|
|
else
|
||
|
|
log "Homebrew already installed."
|
||
|
|
fi
|
||
|
|
|
||
|
|
if [[ -x /opt/homebrew/bin/brew ]]; then
|
||
|
|
eval "$(/opt/homebrew/bin/brew shellenv)"
|
||
|
|
fi
|
||
|
|
|
||
|
|
if ! grep -Fq '/opt/homebrew/bin/brew shellenv' "${HOME}/.zprofile" 2>/dev/null; then
|
||
|
|
log "Persisting Homebrew shellenv into ~/.zprofile."
|
||
|
|
printf '\n# Homebrew\neval "$(/opt/homebrew/bin/brew shellenv)"\n' >> "${HOME}/.zprofile"
|
||
|
|
else
|
||
|
|
log "Homebrew shellenv already present in ~/.zprofile."
|
||
|
|
fi
|
||
|
|
|
||
|
|
log "Updating Homebrew metadata."
|
||
|
|
brew update
|
||
|
|
|
||
|
|
log "Installing bootstrap packages."
|
||
|
|
brew install git curl jq python ansible
|
||
|
|
|
||
|
|
log "Preparing workspace directories."
|
||
|
|
mkdir -p "${HOME}/projects" "${HOME}/scripts"
|
||
|
|
|
||
|
|
log "Bootstrap complete."
|
||
|
|
log "Next step: run Ansible playbook for full dev-station configuration:"
|
||
|
|
log " cd ~/projects/a13labs.infra/ansible"
|
||
|
|
log " ansible-playbook playbook_macos_dev_station.yml --limit darwin_dev"
|