-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathcommon
46 lines (43 loc) · 1.15 KB
/
common
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
function link_override {
hostname=$(hostname)
default_target=$1$2
override_target=$1-$hostname$2
link_name=${3:-.$1$2}
if [ -e "$override_target" ]; then
link_file $override_target $link_name
else
link_file $default_target $link_name
fi
}
function link_file {
# the symlink target/file in the repo
target=$PWD/$1
link_name=$HOME/${2:-.$1}
if [ -e "$link_name" ]; then
# file exists
if [ -L "$link_name" ]; then
# it is a link
existing_target=$(readlink $link_name)
if [ -n $existing_target ]; then
if [ ! "$existing_target" = "$target" ]; then
echo Link already exists but links to $existing_target, overwrite with $target?
ln -vis $target $link_name
fi
else
echo "Previous link broken, overwriting"
ln -vis $target $link_name
fi
else
echo warning: File exists and is not a symlink, wanted target dotfile: $target link_name: $link_name
fi
else
mkdir -vp $(dirname $link_name)
ln -vs $target $link_name
fi
}
function copy_file {
target=$PWD/$1
copy_to=$HOME/${2:-.$1}
mkdir -vp $(dirname $copy_to)
cp -f $target $copy_to
}