commit:     9ad1e2555ee67d4cd7dfc538f09f37b1eecc5566
Author:     Maciej Barć <xgqt <AT> gentoo <DOT> org>
AuthorDate: Tue Aug 22 13:48:26 2023 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sat Aug 26 06:51:06 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=9ad1e255

eclass/elisp-common.eclass: add elisp-org-export-to

Signed-off-by: Maciej Barć <xgqt <AT> gentoo.org>
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 eclass/elisp-common.eclass | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/eclass/elisp-common.eclass b/eclass/elisp-common.eclass
index 03e47d931f44..ef24622d405e 100644
--- a/eclass/elisp-common.eclass
+++ b/eclass/elisp-common.eclass
@@ -348,6 +348,39 @@ elisp-make-autoload-file() {
        eend $? "elisp-make-autoload-file: batch-update-autoloads failed" || die
 }
 
+# @FUNCTION: elisp-org-export-to
+# @USAGE: <export file type> <Org file path>
+# @DESCRIPTION:
+# Use Emacs Org "export-to" functions to convert a given Org file to a picked
+# format.
+#
+# Example:
+# @CODE
+#      elisp-org-export-to texinfo README.org
+#      mv README.texi ${PN}.texi || die
+# @CODE
+
+elisp-org-export-to() {
+       local export_format="${1}"
+       local org_file_path="${2}"
+
+       local export_group
+       case ${export_format} in
+               info) export_group=texinfo ;;  # Straight to ".info".
+               markdown) export_group=md ;;
+               pdf) export_group=latex ;;
+               *) export_group=${export_format} ;;
+       esac
+
+       # export_format = texinfo    =>  org-texinfo-export-to-texinfo
+       # export_format = pdf        =>  org-latex-export-to-pdf
+
+       local export_function=org-${export_group}-export-to-${export_format}
+
+       ${EMACS} ${EMACSFLAGS} "${org_file_path}" -f "${export_function}" \
+               || die "Org export to ${export_format} failed"
+}
+
 # @FUNCTION: elisp-test-buttercup
 # @USAGE: [test-subdirectory] [test-runner-opts] ...
 # @DESCRIPTION:

Reply via email to