-
Notifications
You must be signed in to change notification settings - Fork 0
/
bootstrap.sh
executable file
·161 lines (134 loc) · 3.75 KB
/
bootstrap.sh
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
#!/bin/bash
function doIt() {
if [[ `uname` == 'Darwin' ]] ; then
# Install homebrew
echo "Installing homebrew..."
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
brew tap homebrew/cask-fonts
# Configure OS X
echo "Configuring OS X..."
sh .macos
# Install apps
brew bundle install Brewfile
fi
if [[ `uname` == 'Linux' ]] ; then
# Install basics
echo "Installing basic apt packages..."
sudo apt-get update
sudo apt-get install build-essential curl zsh locales
sudo locale-gen en_US.UTF-8
# Install homebrew
echo "Installing homebrew..."
sh -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)"
echo 'eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv)' >>~/.profile
eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv)
brew install gcc@7
# Install apps
brew bundle install Brewfile
fi
# Install Vundle package manager for VIM
echo "Installing Vundle plugin manager for VIM..."
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
cd ~
echo "Creating symbolic links for dotfiles"
dotfiles=(
.aliases \
.antigenrc \
.bash_profile \
.bashrc \
.ctags \
.ec2cfg \
.functions \
.gitconfig \
.hyper.js \
.ideavimrc \
.npmrc \
.p10k.zsh
.spaceship \
.s3cfg \
.tmux.conf \
.tmux.remote.conf \
.vimrc \
.vimrc.bundles \
.zshrc \
.zprofile
)
for file in ${dotfiles[@]} ; do
rm $file
ln -s dotfiles/$file
done
unset dotfiles file
ln -s dotfiles/bin
mkdir -p .gradle
cd .gradle
rm gradle.properties; ln -s ~/dotfiles/.gradle/gradle.properties
cd ~
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
vim +PluginInstall +qall
mkdir -p ~/.hyper_plugins
cd ~/.hyper_plugins
ln -s ~/dotfiles/.hyper_plugins/local
cd
chsh -s /bin/zsh
if [[ `uname` == 'Darwin' ]] ; then
dockutil --remove all --no-restart
sh dotfiles/configure-dock.sh
killall Dock
chflags hidden bin
chflags hidden dotfiles
fi
}
function printUsage() {
echo "./bootstrap.sh --email-de=<email> --email-us=<email> --installation-type=<type>"
echo ""
echo " --email-de German App Store email (required on Mac only)"
echo " --email-us US App Store email (required on Mac only)"
echo " --installation [basic|default|full] (required)"
}
function validateCmdArgs() {
if [ -z $INSTALLATION_TYPE ]; then
printUsage;
exit
fi
if [[ `uname` == 'Darwin' ]] ; then
if [ -z $EMAIL_DE ] || [ -z $EMAIL_US ]; then
printUsage;
exit
fi
fi
echo ""
echo "App Store Email (Germany) = ${EMAIL_DE}"
echo "App Store Email (US) = ${EMAIL_US}"
echo "Installation type = ${INSTALLATION_TYPE}"
}
for i in "$@"
do
case $i in
--email-de=*)
EMAIL_DE="${i#*=}"
shift # past argument=value
;;
--email-us=*)
EMAIL_US="${i#*=}"
shift # past argument=value
;;
-i=*|--installation=*)
INSTALLATION_TYPE=$(echo "${i#*=}" | awk '{print toupper($0)}')
shift # past argument=value
;;
*)
# unknown option
;;
esac
done
validateCmdArgs;
if [ "$1" == "--force" -o "$1" == "-f" ]; then
doIt;
else
read -p "This may overwrite existing files. Are you sure? (y/n) " -n 1;
echo "";
if [[ $REPLY =~ ^[Yy]$ ]]; then
doIt;
fi;
fi;
unset doIt;