From dbbdd1e282137a04ce2271eb00f46869db8b9be4 Mon Sep 17 00:00:00 2001 From: Kévin Le Gouguec Date: Sun, 24 Mar 2024 20:26:15 +0100 Subject: Add script to "update" ELPA packages I update somewhat infrequently, and more often than not some packages will fail to compile for obscure reasons. At this stage, I've done the "generate minimal .emacs with selected packages, install from scratch" dance that I figure I might as well automate it. --- .local/bin/emacs-update-packages | 44 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100755 .local/bin/emacs-update-packages diff --git a/.local/bin/emacs-update-packages b/.local/bin/emacs-update-packages new file mode 100755 index 0000000..8ad22d2 --- /dev/null +++ b/.local/bin/emacs-update-packages @@ -0,0 +1,44 @@ +#!/bin/bash + +set -euo pipefail +set -x + +backup-elpa () +{ + ( + cd ~/.emacs.d + + # Make a timestamped snapshot for archival. + tar czf elpa.$(date +%F).tgz elpa + + # Move directory out of Emacs's sight. We could remove it + # altogether since we have the archived snapshot; keep it + # around for the very minor convenience gain. + mv -T elpa elpa.bkp + ) +} + +gen-dotemacs () +{ + # --batch will not read my configuration. Fall back to print-like + # functions, redirecting to 'external-debugging-output, + # redirecting stderr to stdout, and kill-emacs. + emacs 2>&1 \ + --eval '(pp `(use-package package + :custom + (package-archives '\''(,@package-archives)) + (package-selected-packages '\''(,@package-selected-packages)))) + '\''external-debugging-output' \ + --funcall kill-emacs +} + + +gen-dotemacs > .emacs.upgrade + +backup-elpa +mv .emacs .emacs.bkp + +cp .emacs.upgrade .emacs +emacs --funcall package-install-selected-packages + +mv .emacs.bkp .emacs -- cgit v1.2.3