# /etc/etckeeper/bashrc
#
# Ce fragment de shell a vocation a être « sourcé » lors de l'initialisation de
# bash. Sous Debian, il suffit d'ajout dans /etc/bash.bashrc :
#         . /etc/etckeeper/bashrc
#
# Une fois en place :
#  * Les variables GIT_AUTHOR_*, utilisé par git pour signer les commits,
#    seront initialisées en fonction du contenu du ~/.gitconfig ou du login
#    utilisé pour la connexion.
#  * La fermeture du shell dans le cas où des modifications de /etc n'ont pas
#    été enregistré échouera avec un avertissement.
#

case $- in
    *i*) # interactive shell
	check_uncommitted() {
		if sudo -n etckeeper unclean 2> /dev/null; then
			echo "Uncommitted changes to /etc found, please commit them"
			CHECK_UNCOMMITED="done" bash -$-
		fi
	}
	git_export_env() {
		local ttyuser ttyuserhome conf

		ttyuser="$(stat -c "%U" $(tty))"
		ttyuserhome="$(getent passwd "$ttyuser" | cut -d: -f6)"
		conf="$ttyuserhome/.gitconfig"

		if [ -z "$GIT_AUTHOR_NAME" ] && [ -z "$GIT_AUTHOR_EMAIL" ]; then
			if [ ! -z "$GIT_CONFIG_LOCAL" ] || [ ! -z "$GIT_CONFIG" ]; then
				export GIT_AUTHOR_NAME="$(git config --get user.name)"
				export GIT_AUTHOR_EMAIL="$(git config --get user.email)"
			elif [ -r "$conf" ]; then
				export GIT_AUTHOR_NAME="$(git config --file "$conf" --get user.name)"
				export GIT_AUTHOR_EMAIL="$(git config --file "$conf" --get user.email)"
			else
				export GIT_AUTHOR_NAME="$USER"
				export GIT_AUTHOR_EMAIL="$USER@$(hostname -f)"
			fi
		fi
	}

	etckeeper_prompt() {
	        if sudo -n etckeeper unclean 2> /dev/null; then
	                echo -n '(!) '
	        fi
	}
	set_etckeeper_prompt() {
	        PS1="\$(etckeeper_prompt)$PS1"
	}

	set_etckeeper_prompt_color() {
	        PS1="\[\e[1;31m\]\$(etckeeper_prompt)$PS1"
	}

	if [ "$CHECK_UNCOMMITED" != "done" ]; then
		trap check_uncommitted EXIT
	fi
	git_export_env
	;;
esac
