3.2 KiB
3.2 KiB
title | description | sidebar_label | slug | githubLocation | scriptLocation | repoLocation |
---|---|---|---|---|---|---|
Homebrew / Xcode Tools Installation | Ensures Xcode tools are installed on macOS and ensures Homebrew is installed on either Linux or macOS | 01 Homebrew / Xcode Tools Installation | /scripts/before/run_before_01-install-homebrew.sh.tmpl | https://github.com/megabyte-labs/install.doctor/blob/master/home/.chezmoiscripts/universal/run_before_01-install-homebrew.sh.tmpl | https://github.com/megabyte-labs/install.doctor/raw/master/home/.chezmoiscripts/universal/run_before_01-install-homebrew.sh.tmpl | home/.chezmoiscripts/universal/run_before_01-install-homebrew.sh.tmpl |
Homebrew / Xcode Tools Installation
Ensures Xcode tools are installed on macOS and ensures Homebrew is installed on either Linux or macOS
Overview
This script ensures macOS has tools like git
by installing the Xcode command-line developer tools if they are
not already installed. Then, on both Linux and macOS, it ensures Homebrew is installed.
Homebrew Requirement
Install Doctor relies on Homebrew for many tools that are currently only available via Homebrew. Removing the dependency would be a nice-to-have but there are currently no plans for supporting systems without Homebrew installed.
Source Code
{{- if (ne .host.distro.family "windows") -}}
#!/usr/bin/env bash
# @file Homebrew / Xcode Tools Installation
# @brief Ensures Xcode tools are installed on macOS and ensures Homebrew is installed on either Linux or macOS
# @description
# This script ensures macOS has tools like `git` by installing the Xcode command-line developer tools if they are
# not already installed. Then, on both Linux and macOS, it ensures Homebrew is installed.
#
# ## Homebrew Requirement
#
# Install Doctor relies on Homebrew for many tools that are currently only available via Homebrew. Removing the dependency
# would be a nice-to-have but there are currently no plans for supporting systems without Homebrew installed.
{{ includeTemplate "universal/profile-before" }}
{{ includeTemplate "universal/logg-before" }}
### Install Xcode CLI tools on macOS
if [ -d /Applications ] && [ -d /Library ]; then
xcode-select -p >/dev/null 2>&1 || sudo xcode-select --install
fi
### Install Homebrew
ensurePackageManagerHomebrew() {
if ! command -v brew > /dev/null; then
if command -v sudo > /dev/null && sudo -n true; then
echo | bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
else
logg info 'Homebrew is not installed. Password may be required.'
bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" || BREW_EXIT_CODE="$?"
if [ -n "$BREW_EXIT_CODE" ]; then
if command -v brew > /dev/null; then
logg warn 'Homebrew was installed but part of the installation failed. Attempting to fix..'
BREW_DIRS="share/man share/doc share/zsh/site-functions etc/bash_completion.d"
for BREW_DIR in $BREW_DIRS; do
if [ -d "$(brew --prefix)/$BREW_DIR" ]; then
sudo chown -R "$(whoami)" "$(brew --prefix)/$BREW_DIR"
fi
done
brew update --force --quiet
fi
fi
fi
fi
}
ensurePackageManagerHomebrew
{{ end -}}