#!/bin/sh set -e unclean() { if [ "$VCS" = git ]; then [ -d .git ] && ! LANG=C git-status 2>&1 | grep -q "working directory clean" elif [ "$VCS" = hg ]; then [ -d .hg ] && ! hg status 2>&1 | wc -l | grep -q "^0$" fi } status() { if [ "$VCS" = git ]; then git status elif [ "$VCS" = hg ]; then hg status fi } commit() { message="$1" if [ "$VCS" = git ]; then git add . git commit $GIT_COMMIT_OPTIONS -m "$message" elif [ "$VCS" = hg ]; then hg addremove . hg commit $HG_COMMIT_OPTIONS -m "$message" fi } if unclean; then RET="true" if [ -e /usr/share/debconf/confmodule ]; then . /usr/share/debconf/confmodule db_capb escape db_title etckeeper db_reset etckeeper/unclean || true db_subst etckeeper/unclean VCS "$VCS" db_subst etckeeper/unclean STATUS $(status | debconf-escape -e) || true db_input critical etckeeper/unclean || true db_go || true db_get etckeeper/unclean fi if [ "$RET" = true ]; then if ! commit "saving uncommitted changes in /etc prior to $HIGHLEVEL_PACKAGE_MANAGER run"; then if [ -e /usr/share/debconf/confmodule ]; then db_subst etckeeper/commit_failed VCS "$VCS" db_input critical etckeeper/commit_failed || true db_go || true db_reset etckeeper/commit_failed || true else echo "error: etckeeper failed to commit changes in /etc using $VCS" exit 1 fi fi fi if [ -e /usr/share/debconf/confmodule ]; then db_reset etckeeper/unclean || true fi fi