From 2dabcba1489aefe1c309bb1385ffc959e767f0c5 Mon Sep 17 00:00:00 2001 From: Philip Kaludercic Date: Thu, 20 Oct 2022 21:34:48 +0200 Subject: [PATCH] Build documentation like elpa-admin.el * lisp/emacs-lisp/package-vc.el (package-vc-build-documentation): Add function to build a documentation file. (package-vc-unpack-1): Use 'package-vc-build-documentation'. --- lisp/emacs-lisp/package-vc.el | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/lisp/emacs-lisp/package-vc.el b/lisp/emacs-lisp/package-vc.el index 83038418529..e9f5f254d09 100644 --- a/lisp/emacs-lisp/package-vc.el +++ b/lisp/emacs-lisp/package-vc.el @@ -242,6 +242,21 @@ The output is written out into PKG-FILE." "\n") nil pkg-file nil 'silent)))) +(declare-function org-export-to-file "ox" (backend file)) + +(defun package-vc-build-documentation (pkg-desc file) + "Build documentation FILE for PKG-DESC." + (let ((pkg-dir (package-desc-dir pkg-desc))) + (when (string-match-p "\\.org\\'" file) + (require 'ox) + (require 'ox-texinfo) + (with-temp-buffer + (insert-file-contents file) + (setq file (make-temp-file "ox-texinfo-")) + (org-export-to-file 'texinfo file))) + (call-process "install-info" nil nil nil + file pkg-dir))) + (defun package-vc-unpack-1 (pkg-desc pkg-dir) "Install PKG-DESC that is already located in PKG-DIR." ;; In case the package was installed directly from source, the @@ -273,14 +288,10 @@ The output is written out into PKG-FILE." (package-vc-generate-description-file pkg-desc pkg-file) ;; Detect a manual - (when (executable-find "install-info") - ;; Only proceed if we can find an unambiguous TeXinfo file - (let ((texi-files (directory-files pkg-dir t "\\.texi\\'")) - (dir-file (expand-file-name "dir" pkg-dir))) - (when (length= texi-files 1) - (call-process "install-info" nil nil nil - (concat "--dir=" dir-file) - (car texi-files)))))) + (when-let ((pkg-spec (pacakge-vc-desc->spec pkg-desc)) + ((executable-find "install-info"))) + (dolist (doc-file (ensure-list (plist-get pkg-spec :doc))) + (package-vc-build-documentation pkg-desc doc-file)))) ;; Update package-alist. (let ((new-desc (package-load-descriptor pkg-dir))) -- 2.39.5