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

77 lines
3.2 KiB
Markdown

---
title: Homebrew Install
description: Installs Homebrew on macOS and / or Linux.
sidebar_label: Homebrew Install
slug: /scripts/utility/homebrew.sh
githubLocation: https://github.com/megabyte-labs/install.doctor/blob/master/scripts/homebrew.sh
scriptLocation: https://github.com/megabyte-labs/install.doctor/raw/master/scripts/homebrew.sh
repoLocation: scripts/homebrew.sh
---
# Homebrew Install
Installs Homebrew on macOS and / or Linux.
## Overview
This script installs Homebrew on macOS and/or Linux machines. The script:
1. Ensures Homebrew is not already installed
2. Installs Homebrew headlessly if sudo privileges are already given
3. Prompts for the sudo password, if required
4. Performs some clean up and update tasks when the Homebrew installation reports an error
**Note**: `https://install.doctor/brew` points to this file.
## Source Code
```
#!/usr/bin/env bash
# @file Homebrew Install
# @brief Installs Homebrew on macOS and / or Linux.
# @description
# This script installs Homebrew on macOS and/or Linux machines. The script:
#
# 1. Ensures Homebrew is not already installed
# 2. Installs Homebrew headlessly if sudo privileges are already given
# 3. Prompts for the sudo password, if required
# 4. Performs some clean up and update tasks when the Homebrew installation reports an error
#
# **Note**: `https://install.doctor/brew` points to this file.
if ! command -v brew > /dev/null; then
if [ -d /home/linuxbrew/.linuxbrew/bin ]; then
eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv)
if ! command -v brew > /dev/null; then
echo "The /home/linuxbrew/.linuxbrew directory exists but something is not right. Try removing it and running the script again." && exit 1
fi
else
# @description Installs Homebrew and addresses a couple potential issues
if command -v sudo > /dev/null && sudo -n true; then
echo | /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
else
echo "Homebrew is not installed. The script will attempt to install Homebrew and you might be prompted for your password."
/bin/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
echo "Homebrew was installed but part of the installation failed. Trying a few things to fix the installation.."
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
# @description Ensures the `brew` binary is available on Linux machines. macOS installs `brew` into the default `PATH`
# so nothing needs to be done for macOS.
if [ -d /home/linuxbrew/.linuxbrew/bin ]; then
eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv)
fi
fi
fi
```