Handle translation of Install Guide and FirstApp

These documents have several variations and we need to build all of
them.

Fix handling of draft documents for these.
Silence sphinx and msgmerge.

Change-Id: Ia34dab84f51838171240f8a0b17dec5f65058fc5
This commit is contained in:
Andreas Jaeger 2015-08-22 15:00:37 +02:00
parent 1844bc2ca2
commit eb5f3ef18f
2 changed files with 61 additions and 15 deletions

View File

@ -9,6 +9,7 @@ Release notes
* Remove ``dn2osdbk`` and the ``hotref`` sphinx extension. * Remove ``dn2osdbk`` and the ``hotref`` sphinx extension.
* ``autohelp.py``: Can now find options for a project in multiple python * ``autohelp.py``: Can now find options for a project in multiple python
packages. packages.
* ``doc-tools-check-languages``: Handle RST Install Guide and FirstApp.
0.29.1 0.29.1
------ ------

View File

@ -46,9 +46,14 @@ function build_rst {
TAG="" TAG=""
# We need to extract all strings, so add all supported tags # We need to extract all strings, so add all supported tags
if [ ${book} = "firstapp" ] ; then if [ ${book} = "firstapp" ] ; then
TAG="-t libcloud -t fog" TAG="-t libcloud -t fog -t dotnet -t pkgcloud -t shade"
fi fi
tox -evenv "sphinx-build -W -b gettext $TAG ${DOC_DIR}${book}/source/ ${DOC_DIR}${book}/source/locale/" if [ ${book} = "install-guide" ] ; then
TAG="-t obs -t rdo -t ubuntu -t debian"
fi
tox -evenv "sphinx-build -q -E -W -b gettext $TAG ${DOC_DIR}${book}/source/ \
${DOC_DIR}${book}/source/locale/"
# Merge the common-rst po file in # Merge the common-rst po file in
if [[ -e ${DOC_DIR}common-rst/source/locale/${language}/LC_MESSAGES/common-rst.po ]] ; then if [[ -e ${DOC_DIR}common-rst/source/locale/${language}/LC_MESSAGES/common-rst.po ]] ; then
msgcat --use-first -o ${DOC_DIR}${book}/source/locale/${language}/${book}.po \ msgcat --use-first -o ${DOC_DIR}${book}/source/locale/${language}/${book}.po \
@ -66,31 +71,55 @@ function build_rst {
bf=$(basename $f) bf=$(basename $f)
# Remove .pot # Remove .pot
bfname=${bf%.pot} bfname=${bf%.pot}
msgmerge -o ${DOC_DIR}${book}/source/locale/${language}/LC_MESSAGES/${bfname}.po \ msgmerge --silent -o ${DOC_DIR}${book}/source/locale/${language}/LC_MESSAGES/${bfname}.po \
${DOC_DIR}${book}/source/locale/${language}/LC_MESSAGES/${book}.po \ ${DOC_DIR}${book}/source/locale/${language}/LC_MESSAGES/${book}.po \
${DOC_DIR}${book}/source/locale/${bf} ${DOC_DIR}${book}/source/locale/${bf}
msgfmt ${DOC_DIR}${book}/source/locale/${language}/LC_MESSAGES/${bfname}.po \ msgfmt ${DOC_DIR}${book}/source/locale/${language}/LC_MESSAGES/${bfname}.po \
-o ${DOC_DIR}${book}/source/locale/${language}/LC_MESSAGES/${bfname}.mo -o ${DOC_DIR}${book}/source/locale/${language}/LC_MESSAGES/${bfname}.mo
done done
# Build all books
if [ ${book} = "firstapp" ] ; then if [ ${book} = "firstapp" ] ; then
tox -evenv "sphinx-build -t fog -D language=${language} \ # Firstapp has several variations, build all of them
${DOC_DIR}${book}/source/ \ for tag in libcloud dotnet fog pkgcloud shade; do
${DOC_DIR}${book}/build-fog/html" tox -evenv "sphinx-build -q -E -t $tag -D language=${language} \
mkdir -p publish-docs/${language}/firstapp-fog ${DOC_DIR}${book}/source/ \
rsync -a ${DOC_DIR}firstapp/build-fog/html/ publish-docs/${language}/firstapp-fog ${DOC_DIR}${book}/build-${tag}/html"
tox -evenv "sphinx-build -t libcloud -D language=${language} \ mkdir -p publish-docs/${language}/${book}-${tag}
${DOC_DIR}${book}/source/ \ rsync -a ${DOC_DIR}${book}/build-${tag}/html/ \
${DOC_DIR}${book}/build-libcloud/html" publish-docs/${language}/${book}-${tag}
mkdir -p publish-docs/${language}/firstapp-libcloud done
rsync -a ${DOC_DIR}user-guides/build-libcloud/html/ publish-docs/${language}/firstapp-libcloud/ elif [ ${book} = "install-guide" ] ; then
# Install Guide has several variations, build all of them
title_org=$(grep "title::" ${DOC_DIR}${book}/source/index.rst | \
awk '{print substr($0, index($0, "::")+3)}')
trap "sed -i -e \"s/\.\. title::.*/.. title:: ${title_org}/\" \
${DOC_DIR}${book}/source/index.rst" EXIT
for tag in obs rdo ubuntu debian; do
title=$(grep -m 1 -A 5 ".. only:: ${tag}" \
${DOC_DIR}${book}/source/index.rst | \
sed -n 4p | sed -e 's/^ *//g')
sed -i -e "s/\.\. title::.*/.. title:: ${title}/" \
${DOC_DIR}${book}/source/index.rst
tox -evenv "sphinx-build -q -E -t $tag -D language=${language} \
${DOC_DIR}${book}/source/ \
${DOC_DIR}${book}/build-${tag}/html"
mkdir -p publish-docs/${language}/${book}-${tag}
rsync -a ${DOC_DIR}${book}/build-${tag}/html/ \
publish-docs/${language}/${book}-${tag}
done
else else
tox -evenv "sphinx-build -D language=${language} ${DOC_DIR}${book}/source/ \ tox -evenv "sphinx-build -q -E -D language=${language} \
${DOC_DIR}${book}/source/ \
${DOC_DIR}${book}/build/html" ${DOC_DIR}${book}/build/html"
mkdir -p publish-docs/${language}/${book}/ mkdir -p publish-docs/${language}/${book}/
rsync -a ${DOC_DIR}${book}/build/html/ publish-docs/${language}/${book}/ rsync -a ${DOC_DIR}${book}/build/html/ publish-docs/${language}/${book}/
fi fi
} }
function test_language { function test_language {
language=$1 language=$1
@ -148,11 +177,27 @@ function handle_draft_language {
mkdir -p publish-docs/draft/$language mkdir -p publish-docs/draft/$language
for book in ${DRAFTS["$language"]}; do for book in ${DRAFTS["$language"]}; do
case "${book}" in case "${book}" in
install-guide|config-reference) config-reference)
mv publish-docs/$language/draft/$book publish-docs/draft/$language/$book mv publish-docs/$language/draft/$book publish-docs/draft/$language/$book
# Remove directory if it's empty and do not fail if it's non-empty # Remove directory if it's empty and do not fail if it's non-empty
rmdir publish-docs/$language/draft || true rmdir publish-docs/$language/draft || true
;; ;;
firstapp)
for tag in libcloud dotnet fog pkgcloud shade; do
mv publish-docs/$language/$book-${tag} \
publish-docs/draft/$language/$book-${tag}
done
# Remove directory if it's empty and do not fail if it's non-empty
rmdir publish-docs/$language/ || true
;;
install-guide)
for tag in obs rdo ubuntu debian; do
mv publish-docs/$language/$book-${tag} \
publish-docs/draft/$language/$book-${tag}
done
# Remove directory if it's empty and do not fail if it's non-empty
rmdir publish-docs/$language/ || true
;;
*) *)
mv publish-docs/$language/$book publish-docs/draft/$language/$book mv publish-docs/$language/$book publish-docs/draft/$language/$book
;; ;;