-
Notifications
You must be signed in to change notification settings - Fork 0
/
init.bootstrap.sh
154 lines (124 loc) · 4.46 KB
/
init.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
#!/bin/bash
PROMPT="\n\n** "
init () {
echo "$PROMPT Let's bootstrap your machine! ** "
}
gitConf () {
echo "$PROMPT Now reading env file to build a .gitconfig file in $HOME ..."
if [[ -f .env ]]; then
source .env
touch $HOME/.gitconfig
cat .gitconfig-setup >> $HOME/.gitconfig
echo "\n[user]" >> $HOME/.gitconfig
echo "\nname = $GITHUB_USERNAME" >> $HOME/.gitconfig
echo "\nemail = $GITHUB_EMAIL" >> $HOME/.gitconfig
echo "\n" >> $HOME/.gitconfig
# ##### Chromium/V8 stuff: #####
# Cross-platform EOL for both POSIX and Windows, OSS:
git config --global core.autocrlf false
# filemode = false: ignore executable files in working tree:
# filemode, both global and local (avoid overrides):
git config --global --unset-all core.filemode
git config --unset-all core.filemode
# setup in .gitconfig:
git config --global core.filemode false
git config --local gerrit.host true
# Uncomment this if you want your pull commands to always rebase.
# git config --global branch.autosetuprebase always
# Uncomment if you want new branches to track the current branch.
# git config --global branch.autosetupmerge always
else
echo "$PROMPT You need to have an .env file in this directory to proceed. Quitting."
exit 1
fi
}
symlinx () {
echo "$PROMPT Symlinking dotfiles repo to $HOME ... **"
if [ -n "`$SHELL -c 'echo $ZSH_VERSION'`" ]; then
ln -sv "$PWD/.zshrc" "$HOME/.zshrc"
fi
if [ -n "`$SHELL -c 'echo $BASH_VERSION'`" ]; then
ln -sv "$PWD/.bashrc" "$HOME/.bashrc"
fi
mkdir $HOME/cli-utils
for file in $( ls -a $PWD/cli-utils ) ; do
ln -sv "$PWD/cli-utils/$file" "$HOME/cli-utils"
done
# mkdir $HOME/.tmux
# ln -sv "$PWD/.tmux/.tmux.conf" "$HOME/.tmux/.tmux.conf"
ln -sv "$PWD/.tmux.conf" "$HOME/.tmux.conf"
regexLinx="\.git[^$^i^c]|\.bash[^r^c]|terminal|cli-utils"
for file in $( ls -a ) ; do
if [[ $file =~ $regexLinx ]]; then
ln -sv "$PWD/$file" "$HOME"
fi
done
echo "$PROMPT Your symlinks are now complete. Let's look at $HOME : **\n\n"
ls -al ~/
}
gitCompletion () {
echo "$PROMPT Installing git CLI autocomplete and git branch prompt (for zsh) ... **"
curl -o ~/.git-completion.bash https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash
mkdir ~/.zsh
curl -o ~/.zsh/git-completion.zsh https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.zsh
cp ~/.zsh/git-completion.zsh ~/.zsh/_gitcompletion
curl -o ~/.git-prompt.sh https://raw.githubusercontent.com/git/git/master/contrib/completion/git-prompt.sh
}
brewInstall () {
if [ $( echo $OSTYPE | grep 'darwin' ) ] ; then
sh brew.bootstrap.sh
else
echo "$PROMPT You're not on Mac/OSX. You'll have to use different dotfiles (for now) for package management.** "
exit 1
fi
}
nvmInstallNodeVersions () {
nvm install $1
}
nvmList () {
echo "$PROMPT Local versions of Node ** "
nvm ls
}
nvmDefault () {
nvm alias default $1
touch ~/.nvmrc
echo "$1" > ~/.nvmrc
# nvm use
}
nvmInstallFollowup () {
# nvm is a shell function, so let's source it to make it available to us:
. ~/.nvm/nvm.sh
nvmList
echo "$PROMPT Enter which Node version you'd like nvm to install & set as default.** "
read nvmVersion
nvmInstallNodeVersions $nvmVersion
nvmDefault
}
nvmInstall () {
echo "$PROMPT Installing nvm via cURL (homebrew installation is not supported) ... **"
if [ -d "$HOME/.nvm" ]; then
echo "$PROMPT nvm is already installed."
# The nvm scripts do not copy nvm source scripts twice into bash profile.
else
# curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
fi
nvmInstallFollowup
}
globalNPMs () {
# To use nodemon on CLI I guess you need a global install which defeats the purpose of per-project npm but whatevs
npm install -g nodemon
}
# mostly just to ensure scripts are fallthru but also help the user
echoExit () {
echo "$PROMPT Done. Remember to source rc files / start a new window to see some of these settings. ** "
}
init
gitConf
brewInstall
symlinx
gitCompletion
nvmInstall
globalNPMs
echoExit
# unset init, symlinx ...