forked from thoughtbot/laptop
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmac
151 lines (113 loc) · 3.73 KB
/
mac
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
#!/usr/bin/env bash
# Welcome to the thoughtbot laptop script!
# Be prepared to turn your laptop (or desktop, no haters here)
# into an awesome development machine.
fancy_echo() {
printf "\n%b\n" "$1"
}
append_to_zshrc() {
local text="$1" zshrc
local skip_new_line="$2"
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 )); then
printf "%s\n" "$text" >> "$zshrc"
else
printf "\n%s\n" "$text" >> "$zshrc"
fi
fi
}
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
append_to_zshrc 'export PATH="$HOME/.bin:$PATH"'
if [[ "$SHELL" != */zsh ]]; then
fancy_echo "Changing your shell to zsh ..."
chsh -s $(which zsh)
fi
brew_install_or_upgrade() {
if brew_is_installed "$1"; then
if brew_is_upgradable "$1"; then
brew upgrade "$@"
fi
else
brew install "$@"
fi
}
brew_is_installed() {
local name="$(brew_expand_alias "$1")"
brew list -1 | grep -Fqx "$name"
}
brew_is_upgradable() {
local name="$(brew_expand_alias "$1")"
brew outdated --quiet "$name" >/dev/null
[[ $? -ne 0 ]]
}
brew_expand_alias() {
brew info "$1" 2>/dev/null | head -1 | awk '{gsub(/:/, ""); print $1}'
}
brew_launchctl_restart() {
local name="$(brew_expand_alias "$1")"
local domain="homebrew.mxcl.$name"
local plist="$domain.plist"
mkdir -p "$HOME/Library/LaunchAgents"
ln -sfv "/usr/local/opt/$name/$plist" "$HOME/Library/LaunchAgents"
if launchctl list | grep -q "$domain"; then
launchctl unload "$HOME/Library/LaunchAgents/$plist" >/dev/null
fi
launchctl load "$HOME/Library/LaunchAgents/$plist" >/dev/null
}
if ! command -v brew >/dev/null; then
fancy_echo "Installing Homebrew, a good OS X package manager ..."
ruby <(curl -fsS https://raw.githubusercontent.com/Homebrew/install/master/install)
append_to_zshrc '# recommended by brew doctor'
append_to_zshrc 'export PATH="/usr/local/bin:$PATH"' 1
export PATH="/usr/local/bin:$PATH"
else
fancy_echo "Homebrew already installed. Skipping ..."
fi
fancy_echo "Updating Homebrew formulas ..."
brew update
fancy_echo 'Installing git'
brew_install_or_upgrade 'git'
fancy_echo "Installing Postgres, a good open source relational database ..."
brew_install_or_upgrade 'postgres'
brew_launchctl_restart 'postgresql'
fancy_echo "Installing Redis, a good key-value database ..."
brew_install_or_upgrade 'redis'
fancy_echo "Installing vim from Homebrew to get the latest version ..."
brew_install_or_upgrade 'vim'
fancy_echo "Installing Tmux"
brew_install_or_upgrade 'tmux'
fancy_echo "Installing QT, used by Capybara Webkit for headless Javascript integration testing ..."
brew_install_or_upgrade 'qt'
fancy_echo "Installing GitHub CLI client ..."
brew_install_or_upgrade 'gh'
fancy_echo "Installing RVM ..."
curl -sSL https://get.rvm.io | bash -s stable
source ~/.rvm/scripts/rvm
ruby_version="2.2.2"
fancy_echo "Installing Ruby $ruby_version ..."
rvm install "$ruby_version"
fancy_echo "Setting $ruby_version as global default Ruby ..."
rvm --default use "$ruby_version"
fancy_echo "Updating to latest Rubygems version ..."
gem update --system
fancy_echo "Installing Bundler to install project-specific Ruby gems ..."
gem install bundler --no-document
fancy_echo "Configuring Bundler for faster, parallel gem installation ..."
number_of_cores=$(sysctl -n hw.ncpu)
bundle config --global jobs $((number_of_cores - 1))
fancy_echo "Installing your personal additions from ~/.laptop.local ..."
if [[ -f ~/.laptop.local ]]; then
source ~/.laptop.local
fi