#!/bin/sh # Welcome to the thoughtbot laptop script! # Be prepared to turn your laptop (or desktop, no haters here) # into an awesome development machine. # shellcheck disable=SC3043 fancy_echo() { local fmt="$1"; shift # shellcheck disable=SC2059 printf "\\n$fmt\\n" "$@" } append_to_zshrc() { local text="$1" zshrc local skip_new_line="${2:-0}" if [ -w "$HOME/.zshrc.local" ]; then zshrc="$HOME/.zshrc.local" else zshrc="$HOME/.zshrc" fi if ! grep -Fqs "$text" "$zshrc"; then if [ "$skip_new_line" -eq 1 ]; then printf "%s\\n" "$text" >> "$zshrc" else printf "\\n%s\\n" "$text" >> "$zshrc" fi fi } # shellcheck disable=SC2154 trap 'ret=$?; test $ret -ne 0 && printf "failed\n\n" >&2; exit $ret' EXIT set -e if [ ! -d "$HOME/.bin/" ]; then mkdir "$HOME/.bin" fi if [ ! -f "$HOME/.zshrc" ]; then touch "$HOME/.zshrc" fi # shellcheck disable=SC2016 append_to_zshrc 'export PATH="$HOME/.bin:$PATH"' # Determine Homebrew prefix arch="$(uname -m)" if [ "$arch" = "arm64" ]; then HOMEBREW_PREFIX="/opt/homebrew" else HOMEBREW_PREFIX="/usr/local" fi update_shell() { local shell_path; shell_path="$(command -v zsh)" fancy_echo "Changing your shell to zsh ..." if ! grep "$shell_path" /etc/shells > /dev/null 2>&1 ; then fancy_echo "Adding '$shell_path' to /etc/shells" sudo sh -c "echo $shell_path >> /etc/shells" fi sudo chsh -s "$shell_path" "$USER" } case "$SHELL" in */zsh) if [ "$(command -v zsh)" != "$HOMEBREW_PREFIX/bin/zsh" ] ; then update_shell fi ;; *) update_shell ;; esac # checks architecture if [ "$(uname -m)" = "arm64" ] then # checks if Rosetta is already installed if ! pkgutil --pkg-info=com.apple.pkg.RosettaUpdateAuto > /dev/null 2>&1 then echo "Installing Rosetta" # Installs Rosetta2 softwareupdate --install-rosetta --agree-to-license else echo "Rosetta is installed" fi fi gem_install_or_update() { if gem list "$1" --installed > /dev/null; then gem update "$@" else gem install "$@" fi } if ! command -v brew >/dev/null; then fancy_echo "Installing Homebrew ..." /bin/bash -c \ "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" append_to_zshrc "eval \"\$($HOMEBREW_PREFIX/bin/brew shellenv)\"" export PATH="$HOMEBREW_PREFIX/bin:$PATH" fi if brew list | grep -Fq brew-cask; then fancy_echo "Uninstalling old Homebrew-Cask ..." brew uninstall --force brew-cask fi fancy_echo "Updating Homebrew formulae ..." brew update --force # https://github.com/Homebrew/brew/issues/1151 brew bundle --file=- <