From: Philip Kaludercic Date: Sat, 19 Nov 2022 11:19:37 +0000 (+0100) Subject: * lisp/emacs-lisp/package.el (package-maintainers): Improve error handling X-Git-Tag: emacs-29.0.90~1616^2~28 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=00aebdc182015614e215885e72a06f6df03e57d2;p=emacs.git * lisp/emacs-lisp/package.el (package-maintainers): Improve error handling --- diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index 2f19573e3cd..c1545a28701 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el @@ -4532,19 +4532,28 @@ DESC must be a `package-desc' object." (funcall browse-url-secondary-browser-function url) (browse-url url)))) +(declare-function ietf-drums-parse-address "ietf-drums" + (string &optional decode)) + (defun package-maintainers (pkg-desc &optional no-error) "Return an email address for the maintainers of PKG-DESC. The email address may contain commas, if there are multiple maintainers. If no maintainers are found, an error will be signaled. If the optional argument NO-ERROR is non-nil no error will be signaled in that case." - (unless pkg-desc - (error "Invalid package description")) - (let* ((extras (package-desc-extras pkg-desc)) + (unless (package-desc-p pkg-desc) + (error "Invalid package description: %S" pkg-desc)) + (let* ((name (package-desc-name pkg-desc)) + (extras (package-desc-extras pkg-desc)) (maint (alist-get :maintainer extras))) (cond ((and (null maint) (null no-error)) - (user-error "Package has no explicit maintainer")) + (user-error "Package `%s' has no explicit maintainer" name)) + ((and (not (progn + (require 'ietf-drums) + (ietf-drums-parse-address maint))) + (null no-error)) + (user-error "Package `%s' has no maintainer address" name)) ((not (null maint)) (with-temp-buffer (package--print-email-button maint)