diff options
Diffstat (limited to '')
-rwxr-xr-x | helpcontent2/helpers/find-invalid-help-embeds.sh | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/helpcontent2/helpers/find-invalid-help-embeds.sh b/helpcontent2/helpers/find-invalid-help-embeds.sh new file mode 100755 index 000000000..5c70fd512 --- /dev/null +++ b/helpcontent2/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" |