#!/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
