1
0
mirror of https://github.com/TREX-CoE/qmckl.git synced 2024-06-14 01:05:41 +02:00
qmckl/tools/build_doc.sh

119 lines
2.3 KiB
Bash
Raw Normal View History

2021-03-23 22:23:49 +01:00
#!/bin/bash
2021-05-11 11:45:49 +02:00
# Script to build the documentation.
2021-03-10 12:58:38 +01:00
2021-05-11 11:45:49 +02:00
set -e
2021-03-10 12:58:38 +01:00
2021-05-11 11:45:49 +02:00
if [[ -z ${srcdir} ]] ; then
echo "Error: srcdir environment variable is not defined"
exit 1
fi
2021-03-10 12:58:38 +01:00
2021-03-23 22:23:49 +01:00
2021-05-11 11:45:49 +02:00
readonly DOCS=${srcdir}/share/doc/qmckl/
readonly ORG=${srcdir}/org/
readonly HTMLIZE=${DOCS}/html/htmlize.el
readonly CONFIG_DOC=${srcdir}/tools/config_doc.el
readonly CONFIG_TANGLE=${srcdir}/tools/config_tangle.el
2021-03-23 22:23:49 +01:00
2021-05-11 11:45:49 +02:00
# Checks that all the defined global variables correspond to files.
2021-05-10 23:56:26 +02:00
2021-05-11 11:45:49 +02:00
for dir in ${DOCS}/html ${DOCS}/text ${ORG}
do
if [[ ! -d ${dir} ]]
2021-03-23 22:23:49 +01:00
then
2021-05-11 11:45:49 +02:00
print "${dir} not found"
exit 2
2021-03-23 22:23:49 +01:00
fi
2021-05-11 11:45:49 +02:00
done
2021-03-23 22:23:49 +01:00
2021-05-11 11:45:49 +02:00
for file in ${CONFIG_DOC} ${CONFIG_TANGLE}
do
if [[ ! -f ${file} ]]
then
print "${file} not found"
exit 3
fi
done
2021-03-23 22:23:49 +01:00
function install_htmlize()
{
2021-05-10 23:56:26 +02:00
# Installs the htmlize Emacs plugin if the =htmlize.el= file is not present.
2021-03-23 22:23:49 +01:00
local url="https://github.com/hniksic/emacs-htmlize"
local repo="emacs-htmlize"
2021-04-21 13:17:33 +02:00
2021-03-23 22:23:49 +01:00
[[ -f ${HTMLIZE} ]] || (
2021-04-30 01:26:19 +02:00
cd ${DOCS}/html
2021-05-11 11:45:49 +02:00
${srcdir}/missing git clone ${url} \
2021-03-23 22:23:49 +01:00
&& cp ${repo}/htmlize.el ${HTMLIZE} \
&& rm -rf ${repo}
cd -
)
# Assert htmlize is installed
[[ -f ${HTMLIZE} ]] \
|| exit 1
}
2021-03-10 12:58:38 +01:00
function extract_doc()
{
2021-05-10 23:56:26 +02:00
# Extracts documentation from an org-mode file.
2021-03-23 22:23:49 +01:00
local org=$1
2021-05-11 11:45:49 +02:00
local local_html=${ORG}/${org%.org}.html
local local_text=${ORG}/${org%.org}.txt
2021-04-30 01:26:19 +02:00
local html=${DOCS}/html/${org%.org}.html
local text=${DOCS}/text/${org%.org}.txt
2021-03-23 22:23:49 +01:00
if [[ -f ${html} && ${org} -ot ${html} ]]
then
return
2021-03-10 12:58:38 +01:00
fi
2021-05-11 11:45:49 +02:00
${srcdir}/missing emacs --batch \
2021-03-23 22:23:49 +01:00
--load ${HTMLIZE} \
--load ${CONFIG_DOC} \
${org} \
--load ${CONFIG_TANGLE} \
2021-04-21 13:26:11 +02:00
-f org-html-export-to-html \
-f org-ascii-export-to-ascii
2021-04-30 01:26:19 +02:00
mv ${local_html} ${DOCS}/html
mv ${local_text} ${DOCS}/text
2021-03-23 22:23:49 +01:00
2021-03-10 12:58:38 +01:00
}
2021-03-23 22:23:49 +01:00
function main() {
2021-04-21 13:17:33 +02:00
2021-03-23 22:23:49 +01:00
# Install htmlize if needed
2021-04-21 13:17:33 +02:00
install_htmlize || exit 2
2021-03-23 22:23:49 +01:00
# Create documentation
cd ${SRC} \
|| exit 3
for i in *.org
do
echo "======= ${i} ======="
extract_doc ${i}
done
if [[ $? -eq 0 ]]
then
2021-04-30 01:26:19 +02:00
cd ${DOCS}/html
2021-03-23 22:23:49 +01:00
rm -f index.html
ln README.html index.html
exit 0
else
exit 3
fi
2021-05-11 11:45:49 +02:00
2021-03-23 22:23:49 +01:00
}
main