#!/bin/sh set -e pl="/var/cache/etckeeper/packagelist" # Parent process is etckeeper # (Only procps ps is currently supported, others will fail, # so this may end up empty.) ETCKEEPER_PID=$( ps --no-headers -o ppid "${PPID}" 2>/dev/null | sed 's/^ *//' ) # Find the parent of etckeeper and get the command line of the process if ! [ -z "${ETCKEEPER_PID}" ]; then ETCKEEPER_PPID=$( ps --no-headers -o ppid "${ETCKEEPER_PID}" | sed 's/^ *//' ) ETCKEEPER_PARENT_COMMAND_LINE=$( ps --no-headers -o args "${ETCKEEPER_PPID}" ) fi if etckeeper unclean; then if [ -z "${ETCKEEPER_PARENT_COMMAND_LINE}" ]; then message="committing changes in /etc after $HIGHLEVEL_PACKAGE_MANAGER run" else message="committing changes in /etc made by \"$ETCKEEPER_PARENT_COMMAND_LINE\"" fi set +e if [ -e $pl.pre-install ] && [ "$(cat $pl.fmt 2>/dev/null || true)" = "$(etckeeper list-installed fmt)" ]; then ( echo "$message" echo echo "Package changes:" etckeeper list-installed | diff -U0 $pl.pre-install - | tail -n+4 | egrep '^[-+]' || true ) | etckeeper commit --stdin else etckeeper commit "$(printf "$message")" fi status=$? set -e if [ "$status" != 0 ]; then echo "warning: etckeeper failed to commit changes in /etc using $VCS" >&2 fi fi rm -f $pl.pre-install $pl.fmt