You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.3 KiB
Bash
44 lines
1.3 KiB
Bash
#!/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
|