diff options
Diffstat (limited to 'sys-apps')
-rw-r--r-- | sys-apps/etckeeper/etckeeper-1.18.16-r1.ebuild (renamed from sys-apps/etckeeper/etckeeper-1.18.16.ebuild) | 5 | ||||
-rw-r--r-- | sys-apps/etckeeper/files/etckeeper-conf-update-hook | 32 |
2 files changed, 37 insertions, 0 deletions
diff --git a/sys-apps/etckeeper/etckeeper-1.18.16.ebuild b/sys-apps/etckeeper/etckeeper-1.18.16-r1.ebuild index 7338b278ab35..0591f38928ef 100644 --- a/sys-apps/etckeeper/etckeeper-1.18.16.ebuild +++ b/sys-apps/etckeeper/etckeeper-1.18.16-r1.ebuild @@ -71,6 +71,11 @@ if [ -e /etc/etckeeper/daily ] && [ -e /etc/etckeeper/etckeeper.conf ]; then fi _EOF_ fi + + local conf_update_dir="/etc/portage/conf-update.d" + insinto "${conf_update_dir}" + newins "${FILESDIR}/${PN}-conf-update-hook" "${PN}" + fperms 755 "${conf_update_dir}/${PN}" } pkg_postinst() { diff --git a/sys-apps/etckeeper/files/etckeeper-conf-update-hook b/sys-apps/etckeeper/files/etckeeper-conf-update-hook new file mode 100644 index 000000000000..d0546c8776d3 --- /dev/null +++ b/sys-apps/etckeeper/files/etckeeper-conf-update-hook @@ -0,0 +1,32 @@ +#!/usr/bin/env bash +set -eu + +# etckeeper hook for portage's conf-update hooks (e.g. invoked by +# dispatch-conf). Requires portage > 3.0.22. + +# Do nothing if etckeeper is not initialized. +if [[ ! -f "/etc/etckeeper/etckeeper.conf" ]]; then + exit +fi + +echo "conf-update.d ${@}" + +case "${1}" in + pre-session) + echo "Commiting uncommited changes before starting a configuration update session" + etckeeper pre-install + ;; + post-session) + echo "Commiting uncommited changes before after finishing a configuration update session" + etckeeper post-install + ;; + post-update) + ACTION=${1} + FILE_PATH=${2} + FILE=$(basename "${FILE_PATH}") + + echo "Commiting changes for ${FILE}" + etckeeper vcs add "${FILE_PATH}" + etckeeper vcs commit -m "${FILE}: ${ACTION} (conf-update.d hook)" + ;; +esac |