diff --git a/documentation/Makefile b/documentation/Makefile --- a/documentation/Makefile +++ b/documentation/Makefile @@ -22,7 +22,9 @@ RUBY_CMD = ${LOCALBASE}/bin/ruby HUGO_CMD = ${LOCALBASE}/bin/hugo HUGO_ARGS?= --verbose --minify +ASCIIDOCTOR_CMD= ${LOCALBASE}/bin/asciidoctor ASCIIDOCTORPDF_CMD= ${LOCALBASE}/bin/asciidoctor-pdf +SED_CMD = /usr/bin/sed .if defined(DOC_LANG) && !empty(DOC_LANG) LANGUAGES = ${DOC_LANG} .else @@ -212,3 +214,143 @@ rm -fr ${.CURDIR}/public; \ fi; \ fi + +# +# HTML targets +# Use DOC_LANG to choose the language, e.g., make DOC_LANG="en,fr" html-books +# +html: html-articles html-books + +html-books-target: +.for _lang in ${LANGUAGES:S|,| |g} +.if exists(${.CURDIR}/content/${_lang}/books/) +TMPH += ${.CURDIR}/content/${_lang}/books/*/ +.endif +.endfor +BOOKSDIR != echo ${TMPH} + +html-articles-target: +.for _lang in ${LANGUAGES:S|,| |g} +.if exists(${.CURDIR}/content/${_lang}/articles/) +TTMPH += ${.CURDIR}/content/${_lang}/articles/*/ +.endif +.endfor +ARTICLESDIR != echo ${TTMPH} + +html-books: html-books-target generate-books-toc + +# Books build +# +.for _curhtml in ${BOOKSDIR} + @mkdir -p ${.CURDIR}/public${_curhtml:S|^${.CURDIR}/content||} +.if exists(${_curhtml}book.adoc) + ${ASCIIDOCTOR_CMD} \ + -B ${.CURDIR}/ \ + -r ./shared/lib/man-macro.rb \ + -r ./shared/lib/man-macro.rb \ + -r ./shared/lib/git-macro.rb \ + -r ./shared/lib/packages-macro.rb \ + -r ./shared/lib/inter-document-references-macro.rb \ + -r ./shared/lib/sectnumoffset-treeprocessor.rb \ + --doctype=book \ + -a skip-front-matter \ + -o ${.CURDIR}/public${_curhtml:S|^${.CURDIR}/content||}book.html \ + ${_curhtml}book.adoc +.if exists(${.CURDIR}/static/images/books/${_curhtml:H:T}) + @mkdir -p ${.CURDIR}/public${_curhtml:S|^${.CURDIR}/content||:H:H:H}/images/books/ + cp -R ${.CURDIR}/static/images/books/${_curhtml:H:T}/ \ + ${.CURDIR}/public${_curhtml:S|^${.CURDIR}/content||:H:H:H}/images/books/${_curhtml:H:T}/ + ${SED_CMD} -i '' -e "s|../../../../images|../../images|g" \ + ${.CURDIR}/public${_curhtml:S|^${.CURDIR}/content||}book.html +.endif +.else +# some books use _index.adoc as main document + ${ASCIIDOCTOR_CMD} \ + -B ${.CURDIR}/ \ + -r ./shared/lib/man-macro.rb \ + -r ./shared/lib/man-macro.rb \ + -r ./shared/lib/git-macro.rb \ + -r ./shared/lib/packages-macro.rb \ + -r ./shared/lib/inter-document-references-macro.rb \ + -r ./shared/lib/sectnumoffset-treeprocessor.rb \ + --doctype=book \ + -a skip-front-matter \ + -o ${.CURDIR}/public${_curhtml:S|^${.CURDIR}/content||}book.html \ + ${_curhtml}_index.adoc +.if exists(${.CURDIR}/static/images/books/${_curhtml:H:T}) + @mkdir -p ${.CURDIR}/public${_curhtml:S|^${.CURDIR}/content||:H:H:H}/images/books/ + cp -R ${.CURDIR}/static/images/books/${_curhtml:H:T}/ \ + ${.CURDIR}/public${_curhtml:S|^${.CURDIR}/content||:H:H:H}/images/books/${_curhtml:H:T}/ + ${SED_CMD} -i '' -e "s|../../../../images|../../images|g" \ + ${.CURDIR}/public${_curhtml:S|^${.CURDIR}/content||}book.html +.endif +.endif +.endfor + +html-articles: html-articles-target + +# Articles build +.for _curhtml in ${ARTICLESDIR} + @mkdir -p ${.CURDIR}/public${_curhtml:S|^${.CURDIR}/content||} + ${ASCIIDOCTOR_CMD} \ + -B ${.CURDIR}/ \ + -r ./shared/lib/man-macro.rb \ + -r ./shared/lib/man-macro.rb \ + -r ./shared/lib/git-macro.rb \ + -r ./shared/lib/packages-macro.rb \ + -r ./shared/lib/inter-document-references-macro.rb \ + -r ./shared/lib/sectnumoffset-treeprocessor.rb \ + --doctype=article \ + -a skip-front-matter \ + -o ${.CURDIR}/public${_curhtml:S|^${.CURDIR}/content||}article.html \ + ${_curhtml}_index.adoc +.if exists(${.CURDIR}/static/source/articles/${_curhtml:H:T}) + cp -R ${.CURDIR}/static/source/articles/${_curhtml:H:T}/ \ + ${.CURDIR}/public${_curhtml:S|^${.CURDIR}/content||} +.endif +.if exists(${.CURDIR}/static/images/articles/${_curhtml:H:T}) + @mkdir -p ${.CURDIR}/public${_curhtml:S|^${.CURDIR}/content||:H:H:H}/images/articles/ + cp -R ${.CURDIR}/static/images/articles/${_curhtml:H:T}/ \ + ${.CURDIR}/public${_curhtml:S|^${.CURDIR}/content||:H:H:H}/images/articles/${_curhtml:H:T}/ + ${SED_CMD} -i '' -e "s|../../../images|../../images|g" \ + ${.CURDIR}/public${_curhtml:S|^${.CURDIR}/content||}article.html +.endif +.endfor + +html-clean: html-articles-clean html-books-clean + +html-books-clean: html-books-target +.for _curhtml in ${BOOKSDIR} + rm -f ${.CURDIR}/public${_curhtml:S|^${.CURDIR}/content||}book.html ${_curhtml}toc*.adoc + rm -fr ${.CURDIR}/public${_curhtml:S|^${.CURDIR}/content||} +.endfor +.for _lang in ${LANGUAGES:S|,| |g} + rm -fr ${.CURDIR}/public/${_lang}/books + rm -fr ${.CURDIR}/public/${_lang}/images/books +.if !exists(${.CURDIR}/public/${_lang}/articles) + rm -fr ${.CURDIR}/public/${_lang} +.endif +.endfor + @if [ -d ${.CURDIR}/public/ ]; then \ + if [ -z "`ls -A ${.CURDIR}/public/`" ]; then \ + rm -fr ${.CURDIR}/public; \ + fi; \ + fi + +html-articles-clean: html-articles-target +.for _curhtml in ${ARTICLESDIR} + rm -f ${.CURDIR}/public${_curhtml:S|^${.CURDIR}/content||}article.html + rm -fr ${.CURDIR}/public${_curhtml:S|^${.CURDIR}/content||} +.endfor +.for _lang in ${LANGUAGES:S|,| |g} + rm -fr ${.CURDIR}/public/${_lang}/articles + rm -fr ${.CURDIR}/public/${_lang}/images/articles +.if !exists(${.CURDIR}/public/${_lang}/books) + rm -fr ${.CURDIR}/public/${_lang} +.endif +.endfor + @if [ -d ${.CURDIR}/public/ ]; then \ + if [ -z "`ls -A ${.CURDIR}/public/`" ]; then \ + rm -fr ${.CURDIR}/public; \ + fi; \ + fi