-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathuser_install.sh
executable file
·60 lines (50 loc) · 1.17 KB
/
user_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
#!/bin/bash
function make_symlink() {
DIR=$(dirname "$1")
FILE=$(basename "$1")
DIR_NO_CWD_PREFIX=${DIR#"$2"}
DIR_TARGET="${HOME}${DIR_NO_CWD_PREFIX}"
FILE_TARGET="${DIR_TARGET}/${FILE}"
if [ -f "$FILE_TARGET" ] || [ -d "$FILE_TARGET" ]
then
rm -fr $FILE_TARGET
fi
mkdir -p $DIR_TARGET
# echo "mkdir -p $DIR_TARGET"
# echo "ln -s $1 ${DIR_TARGET}/${FILE}"
ln -s $1 ${DIR_TARGET}/${FILE}
}
function explore_dir() {
for file in $(find ${1} -maxdepth 1)
do
if [ $file = $1 ]
then
continue
fi
if [ -d $file ]
then
pushd $file > /dev/null
curdir=$(pwd)
submodule_test=$(git rev-parse --show-superproject-working-tree 2>&1)
popd > /dev/null
if [ -z "$submodule_test" ]
then
explore_dir $file $2
else
make_symlink $file $2
fi
else
DIR="$(dirname "${file}")"
FILE="$(basename "${file}")"
make_symlink $file $2
fi
done
}
SOURCE="${BASH_SOURCE[0]}"
while [ -h "$SOURCE" ]; do
DIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )"
SOURCE="$(readlink "$SOURCE")"
[[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE"
done
DIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )"
explore_dir $DIR/homedir $DIR/homedir