blob: 8e888feabdcde2dcf39990ac0e3e83320f116687 (
plain)
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
|
#!/usr/bin/env sh
SUBMODULES=$(git submodule status | sed -E 's/ [a-z0-9]+ ([^ ]+) .*/\1/')
FILES=$(tree -aqifF --noreport --prune .local .config | sed -E '/\/$/d;s/\*$//')
for submodule in ${SUBMODULES}; do
SS=$(printf '%s' "${submodule}" | sed 's/\//\\\//g;s/\./\\./g')
FILES=$(printf '%s' "${FILES}" | sed -E "/${SS}/d")
done
function prompt_mergeskip () {
read -p "Merge $1 with local copy? [y/n]" yn
case $yn in
[Yy]*) vimdiff "${HOME}/$1" "$1";;
[Nn]*) return;;
esac
}
NEW_FILES=$((0))
CHG_FILES=$((0))
function copy() {
local FILE="${1}"
echo -ne "missing $FILE\n"
read -p "copy to local config? [y/n]:" yn
case $yn in
[Yy]*) cp $f ~/$f;;
[Nn]*) return;;
esac
}
if [ "$1" = "-c" ]; then
for f in ${FILES}; do
[ -e "${HOME}/${f}" ] || NEW_FILES=$(($NEW_FILES + 1))
diff -q -I 'email|name|signingkey' "${HOME}/${f}" "${f}" >/dev/null
[ $? -ne 0 ] && CHG_FILES=$(($CHG_FILES + 1))
done
printf "New files: %d\nFiles changed: %d\n" "${NEW_FILES}" "${CHG_FILES}"
else
for f in ${FILES}; do
[ -e "${HOME}/${f}" ] || copy $f
diff -q -I 'email|name|signingkey' "${HOME}/${f}" "${f}" >/dev/null
[ $? -ne 0 ] && prompt_mergeskip "${f}"
done
fi
|