summaryrefslogtreecommitdiffstats
path: root/helpcontent2/helpers/find-invalid-help-embeds.sh
diff options
context:
space:
mode:
Diffstat (limited to '')
-rwxr-xr-xhelpcontent2/helpers/find-invalid-help-embeds.sh56
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"