git: 038be2aa83 - main - documentation: Add an option to archive/compress HTML offline files
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 06 Nov 2021 11:10:04 UTC
The branch main has been updated by dbaio:
URL: https://cgit.FreeBSD.org/doc/commit/?id=038be2aa83b06064a952308730b6c7449d14e799
commit 038be2aa83b06064a952308730b6c7449d14e799
Author: Danilo G. Baio <dbaio@FreeBSD.org>
AuthorDate: 2021-11-04 23:07:26 +0000
Commit: Danilo G. Baio <dbaio@FreeBSD.org>
CommitDate: 2021-11-06 11:08:24 +0000
documentation: Add an option to archive/compress HTML offline files
Reviewed by: carlavilla
Differential Revision: https://reviews.freebsd.org/D32867
---
documentation/Makefile | 23 ++++++++++-
documentation/tools/asciidoctor.sh | 82 ++++++++++++++++++++++++++++++--------
2 files changed, 86 insertions(+), 19 deletions(-)
diff --git a/documentation/Makefile b/documentation/Makefile
index 3e63ccef69..3b1a29d9bc 100644
--- a/documentation/Makefile
+++ b/documentation/Makefile
@@ -10,7 +10,10 @@
# run - serves the built documentation site for local browsing
# pdf - build PDF versions of the articles and books.
# html - build HTML versions of the articles and books for
-# offline use
+# offline use.
+# If variable DOC_HTML_ARCHIVE is set, all documents will be
+# archived/compressed, and only these files will be kept in the public
+# directory.
#
# The run target uses hugo's built-in webserver to make the documentation site
# available for local browsing. The documentation should have been built prior
@@ -205,7 +208,7 @@ pdf-articles-clean:
#
# HTML targets
#
-html: generate-books-toc-offline build-offline html-clean-global html-clean-articles html-clean-books
+html: generate-books-toc-offline build-offline html-clean-global html-clean-articles html-clean-books html-archive html-archive-clean-files
html-clean: hugo-clean
@@ -223,3 +226,19 @@ html-clean-books:
.for _lang in ${BOOK_LANGS}
rm -fr ${.CURDIR}/public/${_lang}/books/index.html
.endfor
+
+html-archive:
+.if defined(DOC_HTML_ARCHIVE)
+.for _lang in ${ARTICLE_LANGS}
+ ./tools/asciidoctor.sh articles ${_lang} archive
+.endfor
+.for _lang in ${BOOK_LANGS}
+ ./tools/asciidoctor.sh books ${_lang} archive
+.endfor
+.endif
+
+html-archive-clean-files:
+.if defined(DOC_HTML_ARCHIVE)
+ find ${.CURDIR}/public/ ! -name '*.pdf' ! -name '*.tar.gz' -type f -delete
+ find ${.CURDIR}/public/ -type d -empty -delete
+.endif
diff --git a/documentation/tools/asciidoctor.sh b/documentation/tools/asciidoctor.sh
index 6f33181e25..28924d0b03 100755
--- a/documentation/tools/asciidoctor.sh
+++ b/documentation/tools/asciidoctor.sh
@@ -69,7 +69,7 @@ build_pdf() {
-r ./shared/lib/cross-document-references-macro.rb \
--doctype="$asciidoctor_type" \
-a skip-front-matter \
- -a lang=${doc_lang} \
+ -a lang="$doc_lang" \
-a isonline=1 \
-a env-beastie=1 \
-a pdf-theme=default-with-fallback-font \
@@ -81,6 +81,49 @@ build_pdf() {
# build_epub()
+archive() {
+ if [ "$1" = "" ] || [ "$2" = "" ] || [ "$3" = "" ]; then
+ exit 1
+ fi
+
+ local doc_type="$1"
+ local doc_lang="$2"
+ local doc_name="$3"
+
+ if [ -d "public/$doc_lang" ]; then
+ local pub_dir="public/$doc_lang/$doc_type/$doc_name/"
+ elif [ -d "public/$doc_type" ]; then
+ # single language build
+ local pub_dir="public/$doc_type/$doc_name/"
+ fi
+
+ if [ -f "${pub_dir}${doc_name}_${doc_lang}.tar.gz" ]; then
+ rm -f "${pub_dir}${doc_name}_${doc_lang}.tar.gz"
+ fi
+
+ local source_doc_dir=""
+ if [ -d "public/source/$doc_type/$doc_name/" ]; then
+ source_doc_dir="public/source/$doc_type/$doc_name/"
+ fi
+
+ local image_doc_dir=""
+ if [ -d "public/images/$doc_type/$doc_name/" ]; then
+ image_doc_dir="public/images/$doc_type/$doc_name/"
+ fi
+
+ tar -czf "public/${doc_name}_${doc_lang}.tar.gz" \
+ "$pub_dir" \
+ public/css/ \
+ public/fonts/ \
+ public/js/ \
+ $source_doc_dir \
+ $image_doc_dir
+
+ mv -f "public/${doc_name}_${doc_lang}.tar.gz" "$pub_dir"
+
+}
+
+
main() {
if [ "$1" = "" ] || [ "$2" = "" ] || [ "$3" = "" ]; then
echo "Needs parameters (type, language and format)."
@@ -97,22 +140,27 @@ main() {
exit 1
fi
- if [ ! "$doc_format" = "pdf" ]; then
- # Default pdf
- doc_format="pdf"
- fi
-
- for document in $(find "content/$doc_lang/$doc_type/" -type d -mindepth 1 -maxdepth 1 | awk -F '/' '{ print $4 }' | sort -n); do
- if [ "$doc_format" = "pdf" ] && [ "$document" = "pgpkeys" ]; then
- continue
- fi
-
- if [ "$doc_format" = "pdf" ]; then
- echo "asciidoctor build_pdf: $doc_type $doc_lang $document $doc_format"
- build_pdf "$doc_type" "$doc_lang" "$document"
- fi
-
- done
+ case "$doc_format" in
+ pdf)
+ for document in $(find "content/$doc_lang/$doc_type/" -type d -mindepth 1 -maxdepth 1 | awk -F '/' '{ print $4 }' | sort -n); do
+ if [ "$document" = "pgpkeys" ]; then
+ continue
+ fi
+ echo "asciidoctor build_pdf: $doc_type $doc_lang $document"
+ build_pdf "$doc_type" "$doc_lang" "$document"
+ done
+ ;;
+ archive)
+ for document in $(find "content/$doc_lang/$doc_type/" -type d -mindepth 1 -maxdepth 1 | awk -F '/' '{ print $4 }' | sort -n); do
+ echo "generate archive: $doc_type $doc_lang $document"
+ archive "$doc_type" "$doc_lang" "$document"
+ done
+ ;;
+ *)
+ echo "Formats available: archive, pdf"
+ exit 1
+ ;;
+ esac
}
main "$@"