Function: package-vc--generate-description-file
package-vc--generate-description-file is a byte-compiled function
defined in package-vc.el.gz.
Signature
(package-vc--generate-description-file PKG-DESC PKG-FILE)
Documentation
Generate a package description file for PKG-DESC and write it to PKG-FILE.
Source Code
;; Defined in /usr/src/emacs/lisp/emacs-lisp/package-vc.el.gz
(defun package-vc--generate-description-file (pkg-desc pkg-file)
"Generate a package description file for PKG-DESC and write it to PKG-FILE."
(let ((name (package-desc-name pkg-desc))
(main-file (let ((file (package-vc--main-file pkg-desc)))
(and (file-exists-p file) file))))
(when (equal (package-desc-summary pkg-desc) package--default-summary)
;; We unset the package description if it is just the default
;; summary, so that the following heuristic can take effect.
(setf (package-desc-summary pkg-desc) nil))
;; Infer the package description if missing.
(unless (package-desc-summary pkg-desc)
(setf (package-desc-summary pkg-desc)
(or (package-desc-summary pkg-desc)
(and-let* ((pkg (cadr (assq name package-archive-contents))))
(package-desc-summary pkg))
(and main-file
(lm-summary main-file))
package--default-summary)))
(let ((print-level nil)
(print-quoted t)
(print-length nil))
(write-region
(concat
";;; Generated package description from "
(replace-regexp-in-string
"-pkg\\.el\\'" ".el"
(file-name-nondirectory pkg-file))
" -*- no-byte-compile: t; lexical-binding: t -*-\n"
(prin1-to-string
(nconc
(list 'define-package
(symbol-name name)
(package-vc--version pkg-desc)
(package-desc-summary pkg-desc)
(let ((requires (package-desc-reqs pkg-desc)))
(list 'quote
;; Turn version lists into string form.
(mapcar
(lambda (elt)
(list (car elt)
(package-version-join (cadr elt))))
requires))))
(list :kind 'vc)
(package--alist-to-plist-args
(let ((extras (copy-alist (package-desc-extras pkg-desc))))
(setf (alist-get :commit extras)
(package-vc-commit pkg-desc))
(when-let* (((null (alist-get :maintainer extras)))
(main-file)
(maintainers (lm-maintainers main-file)))
;; Like in `package-buffer-info', for backward
;; compatibility, use a single cons-cell if there's
;; only one maintainer.
(setf (alist-get :maintainer extras)
(if (cdr maintainers)
maintainers
(car maintainers))))
extras)
)))
"\n")
nil pkg-file nil 'silent))))