Refactor package managent batch commands

+ Replace message! with print!
+ doom//packages-* commands now only return t if package list changed
This commit is contained in:
Henrik Lissner 2018-05-20 12:03:46 +02:00
parent 0d9db6f149
commit 61ca98fd3f
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395

View file

@ -26,15 +26,15 @@
(condition-case ex2 (condition-case ex2
(progn ,@body) (progn ,@body)
('file-error ('file-error
(message! (bold (red " FILE ERROR: %s" (error-message-string ex2)))) (print! (bold (red " FILE ERROR: %s" (error-message-string ex2))))
(message! " Trying again...") (print! " Trying again...")
(quiet! (doom-refresh-packages-maybe t)) (quiet! (doom-refresh-packages-maybe t))
,@body)) ,@body))
('user-error ('user-error
(message! (bold (red " ERROR: %s" ex)))) (print! (bold (red " ERROR: %s" ex))))
('error ('error
(doom--refresh-pkg-cache) (doom--refresh-pkg-cache)
(message! (bold (red " FATAL ERROR: %s" ex)))))) (print! (bold (red " FATAL ERROR: %s" ex))))))
(defun doom--refresh-pkg-cache () (defun doom--refresh-pkg-cache ()
"Clear the cache for `doom-refresh-packages-maybe'." "Clear the cache for `doom-refresh-packages-maybe'."
@ -336,12 +336,11 @@ package.el as appropriate."
(defun doom//packages-install () (defun doom//packages-install ()
"Interactive command for installing missing packages." "Interactive command for installing missing packages."
(interactive) (interactive)
(if (not noninteractive) (doom-initialize-packages)
(doom-packages--async-run 'doom//packages-install) (print! "Looking for packages to install...")
(message! "Looking for packages to install...")
(let ((packages (reverse (doom-get-missing-packages)))) (let ((packages (reverse (doom-get-missing-packages))))
(cond ((not packages) (cond ((not packages)
(message! (green "No packages to install!")) (print! (green "No packages to install!"))
nil) nil)
((not (or (getenv "YES") ((not (or (getenv "YES")
@ -364,44 +363,42 @@ package.el as appropriate."
"ELPA")))) "ELPA"))))
(sort (cl-copy-list packages) #'doom--sort-alpha) (sort (cl-copy-list packages) #'doom--sort-alpha)
"\n"))))) "\n")))))
(message! (yellow "Aborted!")) (error "Aborted!"))
nil)
(t ((let (success)
(doom-refresh-packages-maybe doom-debug-mode) (doom-refresh-packages-maybe doom-debug-mode)
(dolist (pkg packages) (dolist (pkg packages)
(message! "Installing %s" (car pkg)) (print! "Installing %s" (car pkg))
(doom--condition-case! (doom--condition-case!
(message! "%s%s" (print! "%s%s"
(if (and (package-installed-p (car pkg)) (if (and (package-installed-p (car pkg))
(not (doom-package-different-backend-p (car pkg))) (not (doom-package-different-backend-p (car pkg)))
(not (doom-package-different-recipe-p (car pkg)))) (not (doom-package-different-recipe-p (car pkg))))
(dark (white "⚠ ALREADY INSTALLED")) (dark (white "⚠ ALREADY INSTALLED"))
(condition-case e (condition-case e
(if (doom-install-package (car pkg) (cdr pkg)) (if (doom-install-package (car pkg) (cdr pkg))
(green "✓ DONE") (prog1 (green "✓ DONE")
(setq success t))
(red "✕ FAILED")) (red "✕ FAILED"))
(error (error
(red "✕ ERROR (%s)" e)))) (red "✕ ERROR (%s)" e))))
(if (plist-member (cdr pkg) :pin) (if (plist-member (cdr pkg) :pin)
(format " [pinned: %s]" (plist-get (cdr pkg) :pin)) (format " [pinned: %s]" (plist-get (cdr pkg) :pin))
"")))) ""))))
(print! (bold (green "Finished!")))
(message! (bold (green "Finished!")))
(doom//reload-load-path) (doom//reload-load-path)
t))))) success)))))
;;;###autoload ;;;###autoload
(defun doom//packages-update () (defun doom//packages-update ()
"Interactive command for updating packages." "Interactive command for updating packages."
(interactive) (interactive)
(if (not noninteractive) (doom-initialize-packages)
(doom-packages--async-run 'doom//packages-update) (print! "Looking for outdated packages...")
(message! "Looking for outdated packages...")
(doom-refresh-packages-maybe doom-debug-mode) (doom-refresh-packages-maybe doom-debug-mode)
(let ((packages (sort (doom-get-outdated-packages) #'doom--sort-alpha))) (let ((packages (sort (doom-get-outdated-packages) #'doom--sort-alpha)))
(cond ((not packages) (cond ((not packages)
(message! (green "Everything is up-to-date")) (print! (green "Everything is up-to-date"))
nil) nil)
((not (or (getenv "YES") ((not (or (getenv "YES")
@ -420,32 +417,30 @@ package.el as appropriate."
(package-version-join (cl-caddr pkg)))) (package-version-join (cl-caddr pkg))))
packages packages
"\n")))))) "\n"))))))
(message! (yellow "Aborted!")) (error "Aborted!"))
nil)
(t ((let (success)
(dolist (pkg packages) (dolist (pkg packages)
(message! "Updating %s" (car pkg)) (print! "Updating %s" (car pkg))
(doom--condition-case! (doom--condition-case!
(message! (print!
(let ((result (doom-update-package (car pkg) t))) (let ((result (doom-update-package (car pkg) t)))
(when result (setq success t))
(color (if result 'green 'red) (color (if result 'green 'red)
(if result "✓ DONE" "✕ FAILED")))))) (if result "✓ DONE" "✕ FAILED"))))))
(print! (bold (green "Finished!")))
(message! (bold (green "Finished!")))
(doom//reload-load-path) (doom//reload-load-path)
t))))) success)))))
;;;###autoload ;;;###autoload
(defun doom//packages-autoremove () (defun doom//packages-autoremove ()
"Interactive command for auto-removing orphaned packages." "Interactive command for auto-removing orphaned packages."
(interactive) (interactive)
(if (not noninteractive) (doom-initialize-packages)
(doom-packages--async-run 'doom//packages-autoremove) (print! "Looking for orphaned packages...")
(message! "Looking for orphaned packages...")
(let ((packages (doom-get-orphaned-packages))) (let ((packages (doom-get-orphaned-packages)))
(cond ((not packages) (cond ((not packages)
(message! (green "No unused packages to remove")) (print! (green "No unused packages to remove"))
nil) nil)
((not ((not
@ -466,22 +461,22 @@ package.el as appropriate."
(upcase (symbol-name backend)))))) (upcase (symbol-name backend))))))
(sort (cl-copy-list packages) #'string-lessp) (sort (cl-copy-list packages) #'string-lessp)
"\n"))))) "\n")))))
(message! (yellow "Aborted!")) (error "Aborted!"))
nil)
(t ((let (success)
(dolist (pkg packages) (dolist (pkg packages)
(doom--condition-case! (doom--condition-case!
(message! (print!
(let ((result (doom-delete-package pkg t))) (let ((result (doom-delete-package pkg t)))
(when result (setq success t))
(color (if result 'green 'red) (color (if result 'green 'red)
"%s %s" "%s %s"
(if result "✓ Removed" "✕ Failed to remove") (if result "✓ Removed" "✕ Failed to remove")
pkg))))) pkg)))))
(message! (bold (green "Finished!"))) (print! (bold (green "Finished!")))
(doom//reload-load-path) (doom//reload-load-path)
t))))) success)))))
;; ;;