aboutsummaryrefslogtreecommitdiff
path: root/updateconf
blob: c454a1c87daa7de36da0ebb3dc1ee4ae2399e5c8 (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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#!/bin/sh

EDITOR=${EDITOR:-vi}

command -v $EDITOR >/dev/null || {
	echo "Editor '$EDITOR' not exist. Append 'EDITOR=<your editor>' to ${0##*/}."
	exit 2
}

[ "$(id -u)" = 0 ] || {
	echo "This operation need root access. Exiting..."
	exit 1
}

pkgnew=$(find /etc -type f -name "*.new" 2> /dev/null)

[ "$pkgnew" ] || {
	echo "Nothing to do. Exiting..."
	exit 0
}

for file in $pkgnew; do
	currentfile=${file%.*}
	if [ ! -e "$currentfile" ]; then
		echo "Remove '$file', '$currentfile' not exist."
		rm -f "$file"
		sleep 0.5
		continue
	fi
	while true; do
		clear
		diff -u $currentfile $file #--color=always
		if [ $? = 0 ]; then
			echo "Remove '$file', no diff found."
			rm -f "$file"
			sleep 1
			break
		fi
		echo
		echo "File: $currentfile"
		echo
		printf "[U]pdate [D]iscard [E]dit [K]eep ?: "
		read ACTION
		echo
		case $ACTION in
			U|u) echo "Replace '$currentfile' with '$file'."
			     mv -f "$file" "$currentfile"
			     break;;
			D|d) echo "Remove '$file'."
			     rm -f "$file"
			     break;;
			E|e) vim "$currentfile";;
			K|k) echo "Keeping both."
			     break;;
		esac
	done
	sleep 0.5
done

clear

echo "Done updating package's configuration files."

exit 0