-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinstall.sh
executable file
·453 lines (430 loc) · 7.58 KB
/
install.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
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
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
#!/bin/bash
IFS=$'\n\t'
# inspired by
# https://gist.github.com/codeinthehole/26b37efa67041e1307db
# https://github.com/why-jay/osx-init/blob/master/install.sh
# https://github.com/timsutton/osx-vm-templates/blob/master/scripts/xcode-cli-tools.sh
# https://codeberg.org/lotharschulz/gists/src/branch/main/osx_bootstrap.sh
# you may have to enter your password
install_xcode(){
echo "Checking Xcode CLI tools"
# Only run if the tools are not installed yet
# To check that try to print the SDK path
xcode-select -p &> /dev/null
if [ "$?" != "0" ]; then
echo "Xcode CLI tools not found. Installing them..."
xcode-select --install && sleep 1
osascript -e 'tell application "System Events"' -e 'tell process "Install Command Line Developer Tools"' -e 'keystroke return' -e 'click button "Agree" of window "License Agreement"' -e 'end tell' -e 'end tell'
PROD=$(softwareupdate -l |
grep "\*.*Command Line" |
tail -n 1 | sed 's/^[^C]* //')
echo "Prod: ${PROD}"
softwareupdate -i "${PROD}" --verbose;
else
echo "Xcode CLI tools OK"
fi
}
install_brew(){
echo "installing brew Command Line Tool ...."
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
}
uninstall_brew(){
echo "installing brew Command Line Tool ...."
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall.sh)"
}
SUDO_USER=$(whoami)
INSTALLDIR=/Users/$SUDO_USER/dotfiles
PACKAGES=(
awscli
azure-cli
ack
aom
apr
apr-util
argon2
asciinema
aspell
autoconf
autojump
automake
bash
bash-completion
bdw-gc
berkeley-db
brew-cask-completion
brotli
c-ares
ca-certificates
cairo
cjson
cmocka
composer
coreutils
curl
dav1d
docbook
docbook-xsl
docker-completion
doctl
erlang
ffmpeg
findutils
flac
fontconfig
freetds
freetype
frei0r
fribidi
fx
gd
gdbm
gdk-pixbuf
gettext
gh
ghostscript
giflib
gifsicle
git
glib
gmp
gnu-getopt
gnu-indent
gnu-sed
gnu-tar
gnu-which
gnupg
gnutls
go
gobject-introspection
gradle
graphite2
graphviz
grpcurl
gts
guile
harfbuzz
helm
htop
httpie
hub
icu4c
ifstat
imagemagick
imath
jasper
jbig2dec
jpeg
jpeg-xl
jpegoptim
jq
kompose
kops
krb5
kubernetes-cli
lame
launchctl-completion
leptonica
libarchive
libass
libassuan
libavif
libb2
libbluray
libcbor
libde265
libevent
libffi
libfido2
libgcrypt
libgpg-error
libheif
libidn
libidn2
libksba
liblqr
libmemcached
libnghttp2
libogg
libomp
libpng
libpq
libpthread-stubs
librist
librsvg
libsamplerate
libsndfile
libsodium
libsoxr
libssh2
libtasn1
libtiff
libtool
libunistring
libusb
libuv
libvidstab
libvmaf
libvorbis
libvpx
libx11
libxau
libxcb
libxdmcp
libxext
libxrender
libyaml
libzip
little-cms2
lolcat
lsusb
lua
lynx
lz4
lzo
m4
markdown
maven
mbedtls
memcached
mercurial
minikube
mpdecimal
mysql-client
ncurses
netpbm
nettle
nmap
node
npth
nvm
oniguruma
opencore-amr
openexr
openjdk
openjdk@11
openjpeg
openldap
optipng
opus
p11-kit
packer
packer-completion
pango
pcre
pcre2
perl
php
pinentry
pixman
pkg-config
postgresql
protobuf
rabbitmq
rav1e
readline
rename
ripgrep
rtmpdump
rubberband
ruby
s3cmd
sdl2
shared-mime-info
six
skaffold
snappy
speex
sqlite
srt
ssh-copy-id
tcl-tk
terminal-notifier
terraform
terraform-docs
tesseract
the_silver_searcher
theora
tidy-html5
tig
tmux
tree
unbound
unixodbc
utf8proc
vagrant-completion
vim
watch
waypoint
webp
wget
wxwidgets
x264
x265
xmlto
xorgproto
xvid
xz
yamllint
zeromq
zimg
zstd
)
CASKS=(
burp-suite
#docker
gimp
google-chrome
google-cloud-sdk
#microsoft-remote-desktop
mysqlworkbench
openphone
postman
rectangle
slack
sublime-merge
sublime-text
vagrant
virtualbox
visual-studio-code
wireshark
##objective-c&dev security suite (non-cmd)
reikey
blockblock
#do-not-disturb
little-snitch
micro-snitch
#cleanmymac
)
PYTHON_PACKAGES=(
ipython
virtualenv
virtualenvwrapper
)
brew_install(){
brew tap homebrew/core
echo "Installing packages..."
brew install ${PACKAGES[@]}
echo "Installing cask apps..."
brew install --cask ${CASKS[@]}
echo "Installing Python packages..."
pip3 install --upgrade pip3
pip3 install --upgrade setuptools
pip3 install ${PYTHON_PACKAGES[@]}
echo "Installing global npm packages..."
npm install marked -g
echo "brew update"
brew update
echo "brew upgrade"
brew upgrade
npm install -g browser-sync
echo "installed"
}
brew_uninstall(){
echo "Uninstalling Python packages..."
pip3 uninstall ${PYTHON_PACKAGES[@]}
pip3 uninstall setuptools
pip3 uninstall pip3
echo "Uninstalling packages..."
brew uninstall --force --ignore-dependencies ${PACKAGES[@]}
echo "Uninstalling cask apps..."
brew uninstall --ignore-dependencies --force --cask ${CASKS[@]}
}
create_symlinks(){
if [ ! -h ~/.conf.tmux ]; then
ln -sfn $INSTALLDIR/tmux.conf ~/.tmux.conf
else
rm -rf ~/.tmux.conf
ln -sfn $INSTALLDIR/tmux.conf ~/.tmux.conf
fi
if [ ! -h ~/.profile ]; then
ln -sfn $INSTALLDIR/bash_profile ~/.profile
else
rm -rf ~/.profile
ln -sfn $INSTALLDIR/bash_profile ~/.profile
fi
if [ ! -h ~/.vimrc ]; then
ln -sfn $INSTALLDIR/vimrc ~/.vimrc
else
rm -rf ~/.vimrc
ln -sfn $INSTALLDIR/vimrc ~/.vimrc
fi
if [ ! -h ~/.gitconfig ]; then
ln -sfn $INSTALLDIR/gitconfig ~/.gitconfig
else
rm -rf ~/.gitconfig
ln -sfn $INSTALLDIR/gitconfig ~/.gitconfig
fi
if [ ! -h ~/.gitignore_global ]; then
ln -sfn $INSTALLDIR/gitignore ~/.gitignore_global
else
rm -rf ~/.gitignore_global
ln -sfn $INSTALLDIR/gitignore ~/.gitignore_global
fi
if [ ! -h ~/.inputrc ]; then
ln -sfn $INSTALLDIR/inputrc ~/.inputrc
else
rm -rf ~/.gitignore_global
ln -sfn $INSTALLDIR/inputrc ~/.inputrc
fi
}
install_deps(){
echo " installing dotfiles startet"
echo "checking if git exist"
which git > /dev/null
if [ "$?" != "0" ]; then
echo "You need git installed to install configs."
exit 1
else
echo "Installing vundle into ~/.vim/bundle/ directory"
rm -rf ~/.vim/*
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
fi
}
echo ----------------------------------------------------------------------------------------------------------
echo -----What would you like to do ? -----for install enter i ---- cleanUp enter c ---- update enter u -------
echo ----------------------------------------------------------------------------------------------------------
echo "to Proceed [i/c/u]:"
read var
case $var in
i)
echo "bootstraping started ................"
install_xcode
install_brew
brew_install
if [ ! -d "$INSTALLDIR" ]; then
git clone https://github.com/laithrafid/dotfiles.git "$INSTALLDIR"
fi
echo "creating symlinks ....."
create_symlinks
source ~/.profile
install_deps
vim +PluginInstall +qall
;;
u)
echo "upgrading started ................"
cd $INSTALLDIR
git pull origin main
brew_install
create_symlinks
install_deps
source ~/.profile
vim +PluginuInstall! +qall
;;
c)
echo "cleanup started ................"
brew_uninstall
vim +PluginClean +qall
rm -rf ~/.vim/*
rm -rf $INSTALLDIR
uninstall_brew
echo "Uninstalling devtools"
sudo rm -rf /Library/Developer/CommandLineTools
;;
esac
if [ ! -f ~/.bashrc ]; then
echo "if [ -f ~/.profile ]; then . ~/.profile ; fi" >> ~/.bashrc
source ~/.bashrc
fi
echo "bootstrapping done"