-
-
Save LavaToaster/518e994d6d720da91a5d to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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=- <<EOF | |
tap "thoughtbot/formulae" | |
tap "homebrew/services" | |
tap "homebrew/dupes" | |
tap "homebrew/versions" | |
tap "homebrew/homebrew-php" | |
tap "caskroom/cask" | |
# Unix | |
brew "ctags" | |
brew "git" | |
brew "openssl" | |
brew "rcm" | |
brew "reattach-to-user-namespace" | |
brew "the_silver_searcher" | |
brew "tmux" | |
brew "vim" | |
brew "zsh" | |
brew "unison" | |
brew "fswatch" | |
brew "sl" # Critical | |
# Image manipulation | |
brew "imagemagick" | |
# Programming languages | |
brew "libyaml" # should come after openssl | |
brew "node" | |
# PHP | |
brew "php70" | |
brew "php70-gmp" | |
brew "php70-mcrypt" | |
brew "php70-pdo-pgsql" | |
brew "php70-intl" | |
brew "php70-ssh2", args: ['HEAD'] | |
brew 'composer' | |
# Cask | |
cask "google-chrome" | |
cask "firefox" | |
# cask "intellij-idea" | |
cask "phpstorm" | |
cask "atom" | |
cask "iterm2" | |
cask "hipchat" | |
cask "virtualbox" | |
cask "vagrant" | |
cask "steam" | |
cask "sequel-pro" | |
# cask "gpgtools" | |
cask "bbedit" | |
cask "postico" | |
cask "postman" | |
cask "cyberduck" | |
cask "filezilla" | |
# Docker for Mac | |
cask "docker" | |
EOF | |
if [ -f "$HOME/.laptop.local" ]; then | |
fancy_echo "Running your customizations from ~/.laptop.local ..." | |
# shellcheck disable=SC1090 | |
. "$HOME/.laptop.local" | |
fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment