diff options
author | Luke Shumaker <lukeshu@sbcglobal.net> | 2016-06-16 23:39:49 +0000 |
---|---|---|
committer | Root McRooty <root@localhost> | 2016-06-16 23:39:49 +0000 |
commit | 3507e9309a3107a10aeeb205be922c3289ea38ed (patch) | |
tree | a1a8177d04c9a6d112468e69d8a73fe28a078ff4 | |
parent | 950769253a6eb6c17c34202b3a63e0287d1b36be (diff) |
saving uncommitted changes in /etc prior to pacman run
-rwxr-xr-x | etckeeper/clean-etc | 36 | ||||
-rwxr-xr-x | etckeeper/post-install.d/50clean-etc | 5 | ||||
-rw-r--r-- | systemd/system/clean-etc.service | 6 |
3 files changed, 47 insertions, 0 deletions
diff --git a/etckeeper/clean-etc b/etckeeper/clean-etc new file mode 100755 index 0000000..6d29052 --- /dev/null +++ b/etckeeper/clean-etc @@ -0,0 +1,36 @@ +#!/usr/bin/env bash +# Copyright 2016 Luke Shumaker +# +# This script gets called by the etckeeper post-install hook. + + +# TODO: this script does not handle creating /var/lib/clean-etc; it +# assumes that it already exists. Especially note setting up .git/hooks/pre-commit + +cd /var/lib/clean-etc + +umask 0022 + +mv -T etc/.git etc.git +rm -rf etc/ + +pacman -Q | while read -r pkgname pkgver; do + file=("/var/cache/pacman/pkg/$pkgname-$pkgver"-*.pkg.tar.*) + pacman -Qlq "$pkgname"|grep ^/etc/|sed "s|^/|$file |" +done | while read -r tarfile etcfile; do + if [[ "$etcfile" = */ ]]; then + mkdir -p "$etcfile" + else + bsdtar xpfv "$tarfile" "$etcfile" + fi +done +touch etc/.gitignore + +mv -T etc.git etc/.git +cd etc/ +if etckeeper unclean -d "$PWD"; then + etckeeper commit -d "$PWD" 'clean commit' +fi + +cd /etc +git fetch --all diff --git a/etckeeper/post-install.d/50clean-etc b/etckeeper/post-install.d/50clean-etc new file mode 100755 index 0000000..a8f3b3d --- /dev/null +++ b/etckeeper/post-install.d/50clean-etc @@ -0,0 +1,5 @@ +#!/usr/bin/env bash +# Copyright 2016 Luke Shumaker + +systemctl reset-failed clean-etc.service &>/dev/null || true +systemctl start clean-etc.service diff --git a/systemd/system/clean-etc.service b/systemd/system/clean-etc.service new file mode 100644 index 0000000..3ab42cc --- /dev/null +++ b/systemd/system/clean-etc.service @@ -0,0 +1,6 @@ +# Copyright 2016 Luke Shumaker +[Unit] +Description=etckeeper clean-etc helper + +[Service] +ExecStart=/etc/etckeeper/clean-etc |