-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinstall.sh
More file actions
executable file
·143 lines (112 loc) · 2.75 KB
/
install.sh
File metadata and controls
executable file
·143 lines (112 loc) · 2.75 KB
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
#!/usr/bin/env bash
#
# Links all the dot things and installs all the antidote things.
set -e
DOTFILES=$HOME/.dotfiles
CUR_DIR="$( cd "$(dirname "$0")" ; pwd -P )"
. $CUR_DIR/scripts/common.zsh
link_file () {
local src=$1 dst=$2
local overwrite= backup= skip=
local action=
if [ -f "$dst" ] || [ -d "$dst" ] || [ -L "$dst" ]
then
if [ "$overwrite_all" == "false" ] && [ "$backup_all" == "false" ] && [ "$skip_all" == "false" ]
then
local currentSrc="$(readlink $dst)"
if [ "$currentSrc" == "$src" ]
then
skip=true;
else
user "File already exists: $dst ($(basename "$src")), what do you want to do?\n\
[s]kip, [S]kip all, [o]verwrite, [O]verwrite all, [b]ackup, [B]ackup all?"
read -n 1 action
case "$action" in
o )
overwrite=true;;
O )
overwrite_all=true;;
b )
backup=true;;
B )
backup_all=true;;
s )
skip=true;;
S )
skip_all=true;;
* )
;;
esac
fi
fi
overwrite=${overwrite:-$overwrite_all}
backup=${backup:-$backup_all}
skip=${skip:-$skip_all}
if [ "$overwrite" == "true" ]
then
rm -rf "$dst"
success "removed $dst"
fi
if [ "$backup" == "true" ]
then
mv "$dst" "${dst}.backup"
success "moved $dst to ${dst}.backup"
fi
if [ "$skip" == "true" ]
then
success "skipped $src"
fi
fi
if [ "$skip" != "true" ] # "false" or empty
then
ln -s "$1" "$2"
success "linked $1 to $2"
fi
}
link_dotdir () {
info "Linking dotdir..."
local overwrite_all=false backup_all=false skip_all=false
link_file "$CUR_DIR" "$DOTFILES"
success "Linked dotdir!"
}
link_dotfiles () {
info "Linking dotfiles..."
local overwrite_all=false backup_all=false skip_all=false
for src in $(find "$DOTFILES/home" -name '.*')
do
dst="$HOME/$(basename "${src}")"
link_file "$src" "$dst"
done
success "Linked dotfiles!"
}
install_zsh () {
info "Installing zsh..."
if ! [ -x "$(command -v zsh)" ]; then
if [ -x "$(command -v brew)" ]; then
brew install zsh
else
sudo apt install -y zsh
fi
fi
local zsh_path="$(which zsh)"
info $zsh_path
if [ $zsh_path != $SHELL ]; then
sudo sh -c "echo $(which zsh) >> /etc/shells" && chsh -s $(which zsh)
fi
if [ $? -eq 0 ]; then
success "Installed zsh!"
else
fail "Zsh install failed :("
fi
}
get_antidote () {
info "Getting antidote..."
if ! [ -x "$(command -v antidote)" ]; then
git clone --depth=1 https://github.com/mattmc3/antidote.git ${ZDOTDIR:-$HOME}/.antidote
fi
success "Got antidote!"
}
link_dotdir
link_dotfiles
install_zsh
get_antidote