helpers/find-invalid-help-embeds.sh | 56 ++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+)
New commits: commit 75f5e0c62da711669d59f572c217b66a3f791b23 Author: Gabor Kelemen <kelem...@gnome.hu> Date: Wed Oct 12 14:39:16 2016 +0200 Script to check the validity of embed tags This script looks up <embed ...> tags in helpcontent, checks whether the referenced file and id exist, and prints a warning if either one does not. Execute from the root directory of the helpcontent2 repository. No parameters are used. Change-Id: Ic20bcfb1db398067231141b9af69c45590e1d452 Reviewed-on: https://gerrit.libreoffice.org/29732 Reviewed-by: Andras Timar <andras.ti...@collabora.com> Tested-by: Andras Timar <andras.ti...@collabora.com> diff --git a/helpers/find-invalid-help-embeds.sh b/helpers/find-invalid-help-embeds.sh new file mode 100755 index 0000000..5c70fd5 --- /dev/null +++ b/helpers/find-invalid-help-embeds.sh @@ -0,0 +1,56 @@ +#!/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/. + +# This script looks up <embed ...> tags in helpcontent, checks whether the +# referenced file and id exist, and prints a warning if either one does not. +# Execute from the root directory of the helpcontent2 repository. +# No parameters are used. + +# Example output of this git grep: +# source/text/sbasic/shared/03010000.xhp: <embed href="text/sbasic/shared/03010300.xhp#farbe"/> +lines=$(git grep "embed href=" source/); + +while read nextline ; do + # source file is before the first : + sourcefile=${nextline%%:*}; + # There may be more than one <embed ...> in one line, split it up, + # but first cut off everything before the first <embed + # and anything after the last > + processline="<embed${nextline#*<embed}"; + processline="${processline%>*}>"; + while [ -n "$processline" ] ; do + # Start processing the first xml tag + target=$(expr "$processline" : '\(<[^>]*>\)'); + # Check if there is an <embed at the beginning + if [ $(expr "$target" : "<embed") -ne "0" ] ; then + # Get the embedded filename#section part + target=${target#*\"}; + target=${target%\"*}; + # target file is before the # + targetfile=${target%#*}; + # target section is after the # + targetsection=${target#*#}; + # does the target file exist? + if [ -f "source/$targetfile" ] ; then + # The target file exist, does the section inside the target file too? + grep -q "id=\"$targetsection\">" source/"$targetfile"; + if [ "$?" -ne "0" ] ; then + echo "$sourcefile: In 'source/$targetfile' there is no section called '$targetsection'"; + fi + else + # target file does not exist + echo "$sourcefile: Embedded target file 'source/$targetfile' does not exist!" ; + fi + fi + # Remove the first xml tag from the parts still to be processed + processline=${processline#<*>}; + # There may be characters after this, i.e. "foo <embed ...>" + if [ -n "$processline" ] ; then + processline="<${processline#*<}"; + fi + done +done <<< "$lines" _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits