diff options
-rwxr-xr-x | pristine-etc-keeper | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/pristine-etc-keeper b/pristine-etc-keeper index a6a395c..a8a3954 100755 --- a/pristine-etc-keeper +++ b/pristine-etc-keeper @@ -26,10 +26,24 @@ commit() ( rm -rf etc/ + local err=false + local files=() while IFS=' ' read -r pkgname pkgver arch; do - file=("/var/cache/pacman/pkg/$pkgname-$pkgver-$arch".pkg.tar.*) - bsdtar xpfv "$file" etc + local file=("/var/cache/pacman/pkg/$pkgname-$pkgver-$arch".pkg.tar.*) + if ! test -f "$file"; then + printf "ERROR: no cached package for %s %s %s\n" "$pkgname" "$pkgver" "$arch" + err=true + fi + files+=("$file") done < <(join <(pacman-etc-name-ver|sort) <(pacman-all-name-arch|sort)) + if $err; then + return 1 + fi + local file + for file in "${files[@]}"; do + printf " -> %s\n" "$file" + bsdtar xpvf "$file" etc + done touch etc/.gitignore ln -sr etc.git etc/.git @@ -68,14 +82,14 @@ main() { while true; do lock if ! [[ -f /var/lib/pristine-etc/spool ]]; then - exit 0 + return 0 fi msg="$(cat /var/lib/pristine-etc/spool)" rm -f /var/lib/pristine-etc/spool unlock - commit "$msg" - pull + commit "$msg" || return $? + pull || return $? done } |