doom purge: delete old ELN directories

This commit is contained in:
Henrik Lissner 2021-01-31 04:27:41 -05:00
parent f5a9dc11ee
commit 07f134b10e
2 changed files with 27 additions and 4 deletions

View file

@ -24,6 +24,7 @@ Emacs (as byte-code is generally not forward-compatible)."
((nobuilds-p ["-b" "--no-builds"] "Don't purge unneeded (built) packages") ((nobuilds-p ["-b" "--no-builds"] "Don't purge unneeded (built) packages")
(noelpa-p ["-p" "--no-elpa"] "Don't purge ELPA packages") (noelpa-p ["-p" "--no-elpa"] "Don't purge ELPA packages")
(norepos-p ["-r" "--no-repos"] "Don't purge unused straight repos") (norepos-p ["-r" "--no-repos"] "Don't purge unused straight repos")
(noeln-p ["-e" "--no-eln"] "Don't purge old ELN bytecode")
(regraft-p ["-g" "--regraft"] "Regraft git repos (ie. compact them)")) (regraft-p ["-g" "--regraft"] "Regraft git repos (ie. compact them)"))
"Deletes orphaned packages & repos, and compacts them. "Deletes orphaned packages & repos, and compacts them.
@ -39,7 +40,8 @@ list remains lean."
(not noelpa-p) (not noelpa-p)
(not norepos-p) (not norepos-p)
(not nobuilds-p) (not nobuilds-p)
regraft-p) regraft-p
(not noeln-p))
(doom-autoloads-reload)) (doom-autoloads-reload))
t) t)
@ -532,7 +534,23 @@ declaration) or dependency thereof that hasn't already been."
(filename path) (filename path)
e))))))) e)))))))
(defun doom-cli-packages-purge (&optional elpa-p builds-p repos-p regraft-repos-p) (defun doom--cli-packages-purge-eln ()
(if-let (dirs
(cl-delete (expand-file-name comp-native-version-dir doom--eln-output-path)
(directory-files doom--eln-output-path t "^[^.]" t)
:test #'file-equal-p))
(progn
(print! (start "Purging old native bytecode..."))
(print-group!
(dolist (dir dirs)
(print! (info "Deleting %S") (relpath dir doom--eln-output-path))
(delete-directory dir 'recursive))
(print! (success "Purged %d directory(ies)" (length dirs))))
(length dirs))
(print! (info "No ELN directories to purge"))
0))
(defun doom-cli-packages-purge (&optional elpa-p builds-p repos-p regraft-repos-p eln-p)
"Auto-removes orphaned packages and repos. "Auto-removes orphaned packages and repos.
An orphaned package is a package that isn't a primary package (i.e. doesn't have An orphaned package is a package that isn't a primary package (i.e. doesn't have
@ -574,4 +592,9 @@ If ELPA-P, include packages installed with package.el (M-x package-install)."
(/= 0 (doom--cli-packages-purge-repos repos-to-purge))) (/= 0 (doom--cli-packages-purge-repos repos-to-purge)))
(if (not regraft-repos-p) (if (not regraft-repos-p)
(ignore (print! (info "Skipping regrafting"))) (ignore (print! (info "Skipping regrafting")))
(doom--cli-packages-regraft-repos repos-to-regraft))))))) (doom--cli-packages-regraft-repos repos-to-regraft))
(when (require 'comp nil t)
(if (not eln-p)
(ignore (print! (info "Skipping native bytecode")))
(doom--cli-packages-purge-eln)))))
(print! (success "Finished purging")))))

View file

@ -31,7 +31,7 @@ stale."
(doom-cli-packages-build) (doom-cli-packages-build)
(when update-p (when update-p
(doom-cli-packages-update)) (doom-cli-packages-update))
(doom-cli-packages-purge purge-p 'builds-p purge-p purge-p) (doom-cli-packages-purge purge-p 'builds-p purge-p purge-p purge-p)
(run-hooks 'doom-sync-post-hook) (run-hooks 'doom-sync-post-hook)
(when (doom-autoloads-reload) (when (doom-autoloads-reload)
(print! (info "Restart Emacs or use 'M-x doom/reload' for changes to take effect"))) (print! (info "Restart Emacs or use 'M-x doom/reload' for changes to take effect")))