-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathunpack.sh
121 lines (109 loc) · 2.4 KB
/
unpack.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
#!/bin/bash
echo `pwd` > $HOME/.dotfiles_home
DOTFILES_HOME=`pwd`
shopt -s nullglob
ext='.symlink'
ask=true
skipall=false
overwriteall=false
backupall=false
function _get_input {
skip=false
overwrite=false
backup=false
invalid=true
while [[ $invalid = true && $ask = true ]]
do
invalid=false
echo "File ~/.$file_name exists, what do you want to do?"
echo " [s]kip, [S]kip all, [o]verwrite, [O]verwrite all, [b]ackup (default), [B]ackup all"
read -e input
if [[ $input = "" ]]
then
input="backup"
fi
input=${input:0:1}
echo
case $input in
s)
skip=true
break
;;
S)
skipall=true
ask=false
break
;;
o)
overwrite=true
break
;;
O)
overwriteall=true
ask=false
break
;;
b)
backup=true
break
;;
B)
backupall=true
ask=false
break
;;
*)
invalid=true
echo "Invalid response."
;;
esac
done
}
function _act_on_input {
if [[ $skip = true || $skipall = true ]]
then
echo "skipping .$file_name"
fi
if [[ $overwrite = true || $overwriteall = true ]]
then
echo "overwriting .$file_name"
ln -sf $DOTFILES_HOME/$file $HOME/.$file_name
fi
if [[ $backup = true || $backupall = true ]]
then
echo "backed up .$file_name"
mv $HOME/.$file_name $HOME/.$file_name.bak
ln -sf $DOTFILES_HOME/$file $HOME/.$file_name
fi
}
function _unpack {
file_name=${file##*/}
file_name=${file_name%$ext}
if [ -e $HOME/.$file_name ]
then
_get_input
_act_on_input
else
ln -sf $DOTFILES_HOME/$file $HOME/.$file_name
fi
}
for dir in `ls`
do
if [ -d $dir -a ! $dir = 'bin' ]
then
for file in `ls -d $dir/*$ext`
do
if [ $file = '.' ]
then
continue
fi
_unpack
done
fi
done
if [ -e bash/bashrc ]
then
file=bash/bashrc
_unpack
fi
shopt -u nullglob