Improve UX & output of doom/bump-* commands

This commit is contained in:
Henrik Lissner 2020-05-20 01:31:26 -04:00
parent 35b99fb272
commit 196490c772
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395

View file

@ -79,36 +79,35 @@ Grabs the latest commit id of the package using 'git'."
straight-vc-git-default-branch)) straight-vc-git-default-branch))
(oldid (or (plist-get plist :pin) (oldid (or (plist-get plist :pin)
(doom-package-get package :pin))) (doom-package-get package :pin)))
id url) (url (straight-vc-git--destructure recipe (upstream-repo upstream-host)
(when (or (eq (plist-get plist :built-in) t) (straight-vc-git--encode-url upstream-repo upstream-host)))
(and (eq (plist-get plist :built-in) 'prefer) (id (or (when url
(locate-library (symbol-name package)))) (cdr (doom-call-process
(user-error "%s: skipping built-in package" package)) "git" "ls-remote" url
(setq url (straight-vc-git--destructure recipe (upstream-repo upstream-host) (unless select
(straight-vc-git--encode-url upstream-repo upstream-host)) (or branch straight-vc-git-default-branch)))))
id (when url (user-error "%s: no id from %s" package url)))
(cdr (doom-call-process (id (car (split-string
"git" "ls-remote" url (if select
(unless select (completing-read "Commit: " (split-string id "\n" t))
(or branch straight-vc-git-default-branch)))))) id)))))
(unless id (when (and oldid
(user-error "%s: no id from %s" package url)) (plist-member plist :pin)
(let* ((id (car (split-string (equal oldid id))
(if select (user-error "%s: no update necessary" package))
(completing-read "Commit: " (split-string id "\n" t)) (save-excursion
id))))) (if (re-search-forward ":pin +\"\\([^\"]+\\)\"" end t)
(when (and oldid (equal oldid id)) (replace-match id t t nil 1)
(user-error "%s: no update necessary" package)) (goto-char (1- end))
(save-excursion (insert " :pin " (prin1-to-string id))))
(if (re-search-forward ":pin +\"\\([^\"]+\\)\"" end t) (cond ((not oldid)
(replace-match id t t nil 1) (message "%s: → %s" package (substring id 0 10)))
(thing-at-point--end-of-sexp) ((< (length oldid) (length id))
(backward-char) (message "%s: extended to %s..." package id))
(insert " :pin " (prin1-to-string id)))) ((message "%s: %s → %s"
(message "Updated %S: %s -> %s" package
package (substring oldid 0 10)
(substring oldid 0 10) (substring id 0 10)))))))
(substring id 0 10))))))
;;;###autoload ;;;###autoload
(defun doom/bump-packages-in-buffer (&optional select) (defun doom/bump-packages-in-buffer (&optional select)
@ -141,12 +140,12 @@ each package."
(interactive (interactive
(let* ((module (completing-read (let* ((module (completing-read
"Bump module: " "Bump module: "
(let ((modules (cons (list :core) (doom-module-list 'all)))) (let ((modules (doom-module-list 'all)))
(mapcar (lambda (m) (mapcar (lambda (m)
(if (listp m) (if (listp m)
(format "%s %s" (car m) (cdr m)) (format "%s %s" (car m) (cdr m))
(format "%s" m))) (format "%s" m)))
(append (list ":private") (append '(:private :core)
(delete-dups (mapcar #'car modules)) (delete-dups (mapcar #'car modules))
modules))) modules)))
nil t nil nil)) nil t nil nil))
@ -154,18 +153,18 @@ each package."
(list (intern (car module)) (list (intern (car module))
(ignore-errors (intern (cadr module))) (ignore-errors (intern (cadr module)))
current-prefix-arg))) current-prefix-arg)))
(mapc (lambda (module) (mapc (fn! ((cat . mod))
(if-let (packages-file (if-let (packages-file
(pcase category (pcase cat
(:private (doom-glob doom-private-dir "packages.el")) (:private (doom-glob doom-private-dir "packages.el"))
(:core (doom-glob doom-core-dir "packages.el")) (:core (doom-glob doom-core-dir "packages.el"))
(_ (doom-module-locate-path category module "packages.el")))) (_ (doom-module-locate-path cat mod "packages.el"))))
(with-current-buffer (with-current-buffer
(or (get-file-buffer packages-file) (or (get-file-buffer packages-file)
(find-file-noselect packages-file)) (find-file-noselect packages-file))
(doom/bump-packages-in-buffer select) (doom/bump-packages-in-buffer select)
(save-buffer)) (save-buffer))
(message "Module %s has no packages.el file" (cons category module)))) (message "Module %s has no packages.el file" (cons cat mod))))
(if module (if module
(list (cons category module)) (list (cons category module))
(cl-remove-if-not (lambda (m) (eq (car m) category)) (cl-remove-if-not (lambda (m) (eq (car m) category))
@ -178,7 +177,6 @@ each package."
(interactive (interactive
(list (completing-read "Bump package: " (list (completing-read "Bump package: "
(mapcar #'car (doom-package-list 'all))))) (mapcar #'car (doom-package-list 'all)))))
(let* ((packages (doom-package-list 'all)) (let* ((packages (doom-package-list 'all))
(modules (plist-get (alist-get package packages) :modules))) (modules (plist-get (alist-get package packages) :modules)))
(unless modules (unless modules