diff options
author | Olivier Hallot <olivier.hallot@libreoffice.org> | 2017-10-03 14:54:42 -0300 |
---|---|---|
committer | Olivier Hallot <olivier.hallot@libreoffice.org> | 2017-10-03 19:58:46 +0200 |
commit | 62a89b1d32a3b230f3094075002cf2162934e4f4 (patch) | |
tree | e92a3ca505aee83e7fe7b707183836a4510921a6 /help3xsl/convert2html.sh | |
parent | 507d26615775cc233413cbb140dd3e7ccf971567 (diff) |
Script to build HTML help files of released version
This script is used to convert released help files into HTML pages
Change-Id: Iae1d6c1a10360229221f8a47b5e7187bbb958d86
Reviewed-on: https://gerrit.libreoffice.org/43094
Reviewed-by: Olivier Hallot <olivier.hallot@libreoffice.org>
Tested-by: Olivier Hallot <olivier.hallot@libreoffice.org>
Diffstat (limited to 'help3xsl/convert2html.sh')
-rwxr-xr-x | help3xsl/convert2html.sh | 293 |
1 files changed, 293 insertions, 0 deletions
diff --git a/help3xsl/convert2html.sh b/help3xsl/convert2html.sh new file mode 100755 index 0000000000..b273bb533f --- /dev/null +++ b/help3xsl/convert2html.sh @@ -0,0 +1,293 @@ +#/bin/bash +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# Convert localized XHP files and TREE files to HTML. +# +# Syntax: convert2html tarball productversion source +# +# Example +# ./convert2html.sh buildtargets_5403.tar.gz 5.4 libreoffice-help-5.4.0.3.tar.xz +# +# This script convert localized XHP and TREE files available as tarballs into +# a set of html pages. +# +# Conversion is done by listing the available languages in the tarball and +# execting the XSLT transformations on each XHP and tree files. +# +# Note: tarball, source and productversion must match. +# +# Special case for converting en-US XHP files to HTML. The en-US source is +# taken from the published helpcontent2 source tarball. +# +# companion files are moved to the right position in the html folder +# Media files are added too. +# + +function getBookmark() { +########################################### +# Extract <bookmarks_value> from each XHP files and build a <ul> list +# in a javascript file +# +# Function called by main routine +# +# $1 is Language +# $2 is productversion +# $3 is the tarname folder +########################################### + +local outdir=`pwd`'/html/'$2'/'$1 + +local sourcedir=$3/HelpTranslatePartTarget/$1/helpcontent2/source +local ffile=$outdir/bookmarks.js +rm -f $ffile +local ffile2=`mktemp` +local stub2=\' +local xslfile=get_bookmark.xsl + +local param1=' --stringparam Language '$1' --stringparam productversion '$2 + +########################################### +# bookmarks for modules +########################################### +for i in CALC CHART WRITER DRAW IMPRESS MATH BASIC +do +local stub1='document.getElementById("bookmark'$i'").innerHTML='\'\\ +sfind=$sourcedir'/'`echo 'text/s'$i | tr '[:upper:]' '[:lower:]'` +param=$param1' --stringparam app '$i +rm -f $ffile2 +find $sfind -type f -name "*.xhp" -exec xsltproc $param $xslfile {} + >> $ffile2 +echo $stub1 >> $ffile +sort -k3b -t\> -s -o $ffile2 $ffile2 +awk 'NF' $ffile2 >> $ffile +echo $stub2 >> $ffile +done + +########################################### +# Case of SHARED +########################################### +stub1='document.getElementById("bookmarkSHARED").innerHTML='\'\\ +rm -f $ffile2 +param=$param1' --stringparam app SHARED' +find $sourcedir'/text/shared' -type f -name "*.xhp" -exec xsltproc $param $xslfile {} + >> $ffile2 +echo $stub1 >> $ffile +sort -k3b -t\> -s -o $ffile2 $ffile2 +awk 'NF' $ffile2 >> $ffile +echo $stub2 >> $ffile + +########################################### +# Case of Explorer (BASE) +########################################### +stub1='document.getElementById("bookmarkBASE").innerHTML='\'\\ +rm -f $ffile2 +param=$param1' --stringparam app BASE' +find $sourcedir'/text/shared/explorer/database' -type f -name "*.xhp" -exec xsltproc $param $xslfile {} + >> $ffile2 +echo $stub1 >> $ffile +sort -k3b -t\> -s -o $ffile2 $ffile2 +awk 'NF' $ffile2 >> $ffile +echo $stub2 >> $ffile +rm -f $ffile2 +} + +########################################### +# Main routine +########################################### + +tarname=$1 +productversion=$2 +source=$3 + +sourceDir=`pwd` + +########################################### +# Un-tar localized XHP and TREE files +########################################### +#tarname=${tarball:0:17} +rm -rf $tarname +#tar -zxf $tarball +cp -r /var/tmp/$tarname . +########################################### +# Un-tar source en-US XHP and TREE files +########################################### + +sourceName=`tar -tf $source | head -1 | cut -f1 -d"/"` +rm -rf $sourceName +tar -xf $source + +########################################### +# Location of the merged l10n help files from sourceDir +########################################### +langDirSource=$tarname/HelpTranslatePartTarget/ +enSource=$sourceName/helpcontent2 + +########################################### +# +# Hack: copy en-US from source help tarball to HelpTranslatePartTarget and HelpTreeTarget +# +########################################### +rm -rf $langDirSource/en-US +mkdir -p $langDirSource/en-US/helpcontent2 +cp -r $enSource/* $langDirSource/en-US/helpcontent2 + +########################################### +# +# Process the en-US tree files +# +########################################### +ALL_TREE='sbasic scalc schart shared simpress smath swriter' +for i in $ALL_TREE +do +cp -r $sourceDir'/'$enSource'/source/auxiliary/'$i.tree $tarname/HelpTreeTarget/$i'/en-US.tree' +done +########################################### +# +# Location of the resulting html +# +########################################### +outDir=$sourceDir/html/$productversion/ + +filter=$sourceDir/online_transform.xsl + +########################################### +# +# clean and recreate the target html folder +# +########################################### + +rm -rf $sourceDir/html +mkdir -p $sourceDir/html/$productversion + +########################################### +# +# Create the bookmark2file.js map. +# +# This file contains a map that convert bookmarks from LibreOffice apps into +# an URL of the corresponding page. +# The URL arriving is converted inside index.html and redirected +# +########################################### +stub1='var map={' +stub2='};' +sfind=$langDirSource'en-US/helpcontent2/source/text/' +ffile=$outDir/bookmark2file.js +ffile2=`mktemp` +rm -f $ffile2 $ffile +find $sfind -type f -name "*.xhp" -exec xsltproc get_url.xsl {} + > $ffile2 +echo $stub1 >> $ffile +awk 'NF' $ffile2 >> $ffile +echo $stub2 >> $ffile +rm -f $ffile2 + +for lang in `ls $langDirSource` +#for lang in pt-BR fr +do + echo 'Processing language '$lang + mkdir -p $outDir/$lang + getBookmark $lang $productversion $tarname & + + pPath=$langDirSource$lang'/helpcontent2/source' + xsltparm='--stringparam Language '$lang' --stringparam local no --stringparam productversion '$productversion' --stringparam root '$pPath'/' + + # iterate all xhp files + + for filep in `find $pPath -name *.xhp` + do +# echo $filep + DIR=${filep##*/source} + name=${DIR:0:-3} + outFile=$outDir$lang$name'html' + xsltproc $xsltparm -o $outFile online_transform.xsl $filep + done + +########################################### +# +# Process tree files +# +########################################### + +treeFileHTML=html/$productversion/$lang/contents.js + +touch $treeFileHTML +echo 'document.getElementById("Contents").innerHTML='$'\047''\'>$treeFileHTML + +xsltparm='--stringparam lang '$lang' --stringparam productversion '$productversion +for tree in $ALL_TREE +do +treeSourceFile=$tarname/HelpTreeTarget/$tree/$lang.tree +treeTemp2=`mktemp` + +xsltproc $xsltparm -o $treeTemp2 get_tree.xsl $treeSourceFile + +awk 'NF' $treeTemp2>>$treeFileHTML + +rm -f $treeTemp2 +done + +echo $'\047'';'>>$treeFileHTML +echo 'Conversion to HTML finished for '$lang +done +########################################### +# Process sitemap index for productversion +########################################### +url='https://help.libreoffice.org' + +ALL_LANGS=`ls $outDir | sed 's/media//'` +ALL_LANGS=`echo $ALL_LANGS | sed 's/bookmark2file.js//'` +echo $ALL_LANGS +sitemap=$outDir/sitemap.xml + +rm -f $sitemap +touch $sitemap + +echo '<?xml version="1.0" encoding="UTF-8"?>' > $sitemap +echo '<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">'>>$sitemap + +for lang1 in $ALL_LANGS +do +echo '<sitemap>' >>$sitemap +echo '<loc>'$url'/'$productversion'/sitemap-'$lang1'.xml</loc>' >>$sitemap +echo '<lastmod>'`date -I`'</lastmod>'>>$sitemap +echo '</sitemap>'>>$sitemap + +########################################### +# +# Process sitemap for productversion-lang +# +########################################### +f=$outDir'/sitemap-'$lang1'.xml' + +rm -f $f +touch $f + +echo '<?xml version="1.0" encoding="UTF-8"?>' > $f +echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' >> $f + + +dd=./html/$productversion/$lang1 + +for ff in `find $dd -name "*.html"` +do +echo '<url><loc>'$url'/'${ff:7}'</loc></url>' >>$f +done +echo '</urlset>'>>$f + +done +echo '</sitemapindex>'>>$sitemap + +########################################### +# +# copy some service files +# +########################################### + +#cp help.html index.html html/ +cp normalize.css default.css help.js jquery-3.1.1.min.js $outDir +cp -r $enSource/source/media $outDir +mkdir -p $outDir/media/icon-themes +#cp -rap ../../icon-themes/galaxy/* $outDir/media/icon-themes/ +#ln -s $productversion html/latest + +exit |