Refactor 'doom purge' & fix elpa purging

Wasn't picking up ELPA packages.
This commit is contained in:
Henrik Lissner 2019-12-28 14:02:07 -05:00
parent 6396cbf6cd
commit 8d3954257e
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395

View file

@ -230,8 +230,10 @@ declaration) or dependency thereof that hasn't already been."
(if (not builds) (if (not builds)
(progn (print! (info "No builds to purge")) (progn (print! (info "No builds to purge"))
0) 0)
(print! (start "Purging straight builds..." (length builds)))
(print-group!
(length (length
(delq nil (mapcar #'doom--cli-packages-purge-build builds))))) (delq nil (mapcar #'doom--cli-packages-purge-build builds))))))
(defun doom--cli-packages-regraft-repo (repo) (defun doom--cli-packages-regraft-repo (repo)
(let ((default-directory (straight--repos-dir repo))) (let ((default-directory (straight--repos-dir repo)))
@ -252,6 +254,7 @@ declaration) or dependency thereof that hasn't already been."
(if (not repos) (if (not repos)
(progn (print! (info "No repos to regraft")) (progn (print! (info "No repos to regraft"))
0) 0)
(print! (start "Regrafting %d repos..." (length repos)))
(let ((before-size (doom-directory-size (straight--repos-dir)))) (let ((before-size (doom-directory-size (straight--repos-dir))))
(print-group! (print-group!
(prog1 (delq nil (mapcar #'doom--cli-packages-regraft-repo repos)) (prog1 (delq nil (mapcar #'doom--cli-packages-regraft-repo repos))
@ -275,22 +278,28 @@ declaration) or dependency thereof that hasn't already been."
(if (not repos) (if (not repos)
(progn (print! (info "No repos to purge")) (progn (print! (info "No repos to purge"))
0) 0)
(print! (start "Purging straight repositories..."))
(print-group!
(length (length
(delq nil (mapcar #'doom--cli-packages-purge-repo repos))))) (delq nil (mapcar #'doom--cli-packages-purge-repo repos))))))
(defun doom--cli-packages-purge-elpa () (defun doom--cli-packages-purge-elpa ()
(unless (bound-and-true-p package--initialized) (require 'core-packages)
(package-initialize)) (let ((dirs (doom-files-in package-user-dir :type t :depth 0)))
(let ((packages (cl-loop for (package desc) in package-alist (if (not dirs)
for dir = (package-desc-dir desc)
if (file-in-directory-p dir package-user-dir)
collect (cons package dir))))
(if (not package-alist)
(progn (print! (info "No ELPA packages to purge")) (progn (print! (info "No ELPA packages to purge"))
0) 0)
(mapc (doom-rpartial #'delete-directory 'recursive) (print! (start "Purging ELPA packages..."))
(mapcar #'cdr packages)) (dolist (path dirs (length dirs))
(length packages)))) (condition-case e
(print-group!
(if (file-directory-p path)
(delete-directory path 'recursive)
(delete-file path))
(print! (success "Deleted %s") (relpath path)))
(error
(print! (error "Failed to delete %s because: %s")
(relpath path) e)))))))
(defun doom-cli-packages-purge (&optional elpa-p builds-p repos-p regraft-repos-p) (defun doom-cli-packages-purge (&optional elpa-p builds-p repos-p regraft-repos-p)
"Auto-removes orphaned packages and repos. "Auto-removes orphaned packages and repos.
@ -328,7 +337,6 @@ If ELPA-P, include packages installed with package.el (M-x package-install)."
(setq success t))) (setq success t)))
(if (not regraft-repos-p) (if (not regraft-repos-p)
(print! (info "Skipping regrafting")) (print! (info "Skipping regrafting"))
(print! (start "Regrafting %d repos..." (length repos-to-regraft)))
(and (doom--cli-packages-regraft-repos repos-to-regraft) (and (doom--cli-packages-regraft-repos repos-to-regraft)
(setq success t))) (setq success t)))
success)))) success))))