forked from thoughtbot/laptop
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmac
201 lines (151 loc) · 6.34 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
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
#!/usr/bin/env bash
### end common-components/bash-shebang
# Welcome to the thoughtbot laptop script! Be prepared to turn your laptop (or
# desktop, no haters here) into an awesome development machine.
# This file is auto-generated. Do not edit it by hand unless you know what
# you're doing. Please see 'CONTRIBUTING.md' for more information.
### end common-components/header
trap 'ret=$?; test $ret -ne 0 && printf "failed\n\n" >&2; exit $ret' EXIT
set -e
### end common-components/exit-trap
if [[ ! -d "$HOME/.bin/" ]]; then
mkdir "$HOME/.bin"
fi
if [ ! -f "$HOME/.zshrc" ]; then
touch $HOME/.zshrc
fi
if [[ ":$PATH:" != *":$HOME/.bin:"* ]]; then
printf 'export PATH="$HOME/.bin:$PATH"\n' >> ~/.zshrc
export PATH="$HOME/.bin:$PATH"
fi
### end common-components/check-home-bin
# fancy_echo() {
# printf "\n%b\n" "$1"
# }
fancy_echo() {
echo -e "\033[0;32m" "$1" "\033[0m"
}
### end common-components/shared-functions
fancy_echo "Changing your shell to zsh ..."
chsh -s $(which zsh)
### end common-components/zsh
brew_install_or_upgrade() {
if brew list -1 | grep -Fqx "$1"; then
(brew upgrade "$@") || true
else
brew install "$@"
fi
}
### end mac-components/mac-functions
if [[ -f /etc/zshenv ]]; then
fancy_echo "Fixing OSX zsh environment bug ..."
sudo mv /etc/{zshenv,zshrc}
fi
### end mac-components/zsh-fix
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/homebrew/go/install)
if ! grep -qs "recommended by brew doctor" ~/.zshrc; then
fancy_echo "Put Homebrew location earlier in PATH ..."
printf '\n# recommended by brew doctor\n' >> ~/.zshrc
printf 'export PATH="/usr/local/bin:$PATH"\n' >> ~/.zshrc
export PATH="/usr/local/bin:$PATH"
fi
else
fancy_echo "Homebrew already installed. Skipping ..."
fi
fancy_echo "Updating Homebrew formulas ..."
brew update
### end mac-components/homebrew
fancy_echo "Installing Postgres, a good open source relational database ..."
brew_install_or_upgrade 'postgres' '--no-python'
fancy_echo "Installing Redis, a good key-value database ..."
brew_install_or_upgrade 'redis'
fancy_echo "Installing The Silver Searcher (better than ack or grep) to search the contents of files ..."
brew_install_or_upgrade 'the_silver_searcher'
fancy_echo "Installing vim from Homebrew to get the latest version ..."
brew_install_or_upgrade 'vim'
fancy_echo "Installing ctags, to index files for vim tab completion of methods, classes, variables ..."
brew_install_or_upgrade 'ctags'
fancy_echo "Installing tmux, to save project state and switch between projects ..."
brew_install_or_upgrade 'tmux'
fancy_echo "Installing reattach-to-user-namespace, for copy-paste and RubyMotion compatibility with tmux ..."
brew_install_or_upgrade 'reattach-to-user-namespace'
fancy_echo "Installing ImageMagick, to crop and resize images ..."
brew_install_or_upgrade 'imagemagick'
fancy_echo "Installing QT, used by Capybara Webkit for headless Javascript integration testing ..."
brew_install_or_upgrade 'qt'
fancy_echo "Installing watch, to execute a program periodically and show the output ..."
brew_install_or_upgrade 'watch'
node_version="0.10.28"
fancy_echo "Installing NVM, Node.js, and NPM, for running apps and installing JavaScript packages ..."
brew_install_or_upgrade 'nvm'
if ! grep -qs 'source $(brew --prefix nvm)/nvm.sh' ~/.zshrc; then
printf 'export PATH="$PATH:/usr/local/lib/node_modules"\n' >> ~/.zshrc
printf 'source $(brew --prefix nvm)/nvm.sh\n' >> ~/.zshrc
fi
source $(brew --prefix nvm)/nvm.sh
nvm install "$node_version"
fancy_echo "Setting $node_version as the global default nodejs..."
nvm alias default "$node_version"
### end mac-components/packages
fancy_echo "Starting Postgres ..."
brew services restart postgresql
### end mac-components/start-services
fancy_echo "Installing rbenv, to change Ruby versions ..."
brew_install_or_upgrade 'rbenv'
if ! grep -qs "rbenv init" ~/.zshrc; then
printf 'export PATH="$HOME/.rbenv/bin:$PATH"\n' >> ~/.zshrc
printf 'eval "$(rbenv init - --no-rehash)"\n' >> ~/.zshrc
fancy_echo "Enable shims and autocompletion ..."
eval "$(rbenv init -)"
fi
export PATH="$HOME/.rbenv/bin:$PATH"
fancy_echo "Installing rbenv-gem-rehash so the shell automatically picks up binaries after installing gems with binaries..."
brew_install_or_upgrade 'rbenv-gem-rehash'
fancy_echo "Installing ruby-build, to install Rubies ..."
brew_install_or_upgrade 'ruby-build'
### end mac-components/rbenv
fancy_echo "Upgrading and linking OpenSSL ..."
brew_install_or_upgrade 'openssl'
brew link openssl --force
### end mac-components/compiler-and-libraries
ruby_version="$(curl -sSL http://ruby.thoughtbot.com/latest)"
fancy_echo "Installing Ruby $ruby_version ..."
rbenv install -s "$ruby_version"
fancy_echo "Setting $ruby_version as global default Ruby ..."
rbenv global "$ruby_version"
rbenv rehash
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 --pre
### end common-components/ruby-environment
fancy_echo "Configuring Bundler for faster, parallel gem installation ..."
number_of_cores=$(sysctl -n hw.ncpu)
bundle config --global jobs $((number_of_cores - 1))
### end mac-components/bundler
fancy_echo "Installing Suspenders, thoughtbot's Rails template ..."
gem install suspenders --no-document
### end common-components/default-gems
fancy_echo "Installing Heroku CLI client ..."
brew_install_or_upgrade 'heroku-toolbelt'
fancy_echo "Installing the heroku-config plugin to pull config variables locally to be used as ENV variables ..."
heroku plugins:install git://github.com/ddollar/heroku-config.git
### end mac-components/heroku
fancy_echo "Installing GitHub CLI client ..."
brew_install_or_upgrade 'hub'
### end mac-components/github
if ! command -v rcup &>/dev/null; then
fancy_echo "Installing rcm, to manage your dotfiles ..."
brew tap thoughtbot/formulae
brew_install_or_upgrade 'rcm'
else
fancy_echo "rcm already installed. Skipping ..."
fi
### end mac-components/rcm
fancy_echo "Installing your personal additions from ~/.laptop.local ..."
if [[ -f ~/.laptop.local ]]; then
source ~/.laptop.local
fi
### end common-components/personal-additions