-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinstall.sh
102 lines (77 loc) · 1.82 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
#!/usr/bin/env bash
# Backups files into "backup" directory.
# Usage: backup <dir> <files...>
# Args:
# dir Where files will be moved to (prefixed by "backup").
# files Which files will be backed up. Please notice the target will be
# their basename.
backup() {
local dir="backup/$1"
shift 1
local files="$*"
mkdir -p ${dir}
for file in ${files}
do
basefile=$(basename ${file})
if [[ -e "${dir}/${basefile}" ]]
then
echo " -- Backup already exists. Skipping. (\"${dir}/${basefile}\")"
continue
fi
if [[ -e ${file} ]]
then
echo " - Backing up ${file}"
mv "${file}" "${dir}/${basefile}"
else
echo " - No ${file}. Skipping."
fi
done
}
make-link() {
local target="${1}"
local source="${2}"
ln -sf "$(pwd)/${target}" "${source}"
}
install-i3-configs() {
backup i3 ~/.i3 ~/.config/i3
make-link i3 ~/.config
}
install-conky-configs() {
backup ./ ~/.config/conky
make-link conky ~/.config
}
install-home-configs() {
backup home ~/.profile
make-link home/profile ~/.profile
}
install-all-configs() {
local configs="conky home i3"
echo "-- Installing All configs..."
for config in ${configs}
do
install-config "${config}"
done
echo "-- All configs installed."
}
install-config() {
local config="${1}"
shift 1
echo "== Installing ${1} configs..."
install-${config}-configs $*
echo "-- Done installing ${1} configs."
}
main() {
local configs=$*
if [[ -z ${configs} ]]
then
install-all-configs
else
echo "Installing configs: [${configs/ /, }]"
for config in ${configs}
do
install-config ${config} $*
done
echo "Done."
fi
}
main $*