install.fairie/docs/scripts/before/run_before_01-install-homebrew.sh.tmpl.md
2023-08-08 03:06:49 -04:00

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 -}}