From 6807a5fda8db2ac638bdb5936219b9fd58eee5aa Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sat, 3 Jun 2017 21:01:32 +0200 Subject: [PATCH] Rewrite how doom-update-package updates from ELPA This is an attempt to make package updating atomic. Previously, if a package failed to update, it would've been deleted. --- core/autoload/packages.el | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/core/autoload/packages.el b/core/autoload/packages.el index 219ffb90a..b6c87df1b 100644 --- a/core/autoload/packages.el +++ b/core/autoload/packages.el @@ -225,8 +225,16 @@ appropriate." (let ((quelpa-upgrade-p t)) (quelpa (assq name quelpa-cache)))) ('elpa - (doom-delete-package name t) - (doom-install-package name)))) + (let* ((desc (cadr (assq name package-alist))) + (archive (cadr (assq name package-archive-contents))) + (packages + (if (package-desc-p archive) + (package-compute-transaction (list archive) (package-desc-reqs archive)) + (package-compute-transaction () (list (list archive)))))) + (package-download-transaction packages) + (when-let (old-dir (package-desc-dir desc)) + (when (file-directory-p old-dir) + (delete-directory old-dir t))))))) (version-list-= (package-desc-version (cadr (assq name package-alist))) (package-desc-version (cadr (assq name package-archive-contents))))))