#!/bin/sh # Welcome to the thoughtbot laptop script! # Be prepared to turn your laptop (or desktop, no haters here) # into an awesome development machine. 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"' HOMEBREW_PREFIX="/usr/local" if [ -d "$HOMEBREW_PREFIX" ]; then if ! [ -r "$HOMEBREW_PREFIX" ]; then sudo chown -R "$LOGNAME:admin" /usr/local fi else sudo mkdir "$HOMEBREW_PREFIX" sudo chflags norestricted "$HOMEBREW_PREFIX" sudo chown -R "$LOGNAME:admin" "$HOMEBREW_PREFIX" fi case "$SHELL" in */zsh) : ;; *) fancy_echo "Changing your shell to zsh ..." chsh -s "$(which zsh)" ;; esac gem_install_or_update() { if gem list "$1" --installed > /dev/null; then gem update "$@" else gem install "$@" rbenv rehash fi } if ! command -v brew >/dev/null; then fancy_echo "Installing Homebrew ..." curl -fsS \ 'https://raw.githubusercontent.com/Homebrew/install/master/install' | ruby append_to_zshrc '# recommended by brew doctor' # shellcheck disable=SC2016 append_to_zshrc 'export PATH="/usr/local/bin:$PATH"' 1 export PATH="/usr/local/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 brew bundle --file=- <