Treat all asciidoc at once to accelerate their validation

This commit is contained in:
Fred Tingaud 2022-02-07 18:22:30 +01:00 committed by GitHub
parent 9bbd4c135e
commit f21f23b986
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -65,27 +65,21 @@ do
fi
RULE="$language/rule.adoc"
if test -f "$RULE"; then
TMP_ADOC="$language/tmp.adoc"
# We build this filename that describes the path to workaround the fact that asciidoctor will not tell
# us the path of the file in case of error.
# We can remove it if https://github.com/asciidoctor/asciidoctor/issues/3414 is fixed.
TMP_ADOC="$language/tmp_$(basename "${dir}")_${language##*/}.adoc"
echo "== Description" > "$TMP_ADOC"
cat "$RULE" >> "$TMP_ADOC"
if asciidoctor --failure-level=WARNING -o /dev/null "$TMP_ADOC"; then
if ! asciidoctor -a rspecator-view --failure-level=WARNING -o /dev/null "$TMP_ADOC"; then
echo "ERROR: $RULE has incorrect asciidoc in rspecator-view mode"
exit_code=1
fi
else
echo "ERROR: $RULE has incorrect asciidoc"
exit_code=1
fi
rm "$TMP_ADOC"
else
echo "ERROR: no asciidoc file $RULE"
exit_code=1
fi
done
# Check that all adoc are included
find "$dir" -name "*.adoc" -execdir sh -c 'grep -h "include::" "$1" | grep -v "rule.adoc" | sed "s/include::\(.*\)\[\]/\1/" | xargs -r -I@ realpath "$PWD/@"' shell {} \; > included
find "$dir" -name "*.adoc" ! -name 'rule.adoc' -exec sh -c 'realpath $1' shell {} \; > created
find "$dir" -name "*.adoc" ! -name 'rule.adoc' ! -name 'tmp*.adoc' -exec sh -c 'realpath $1' shell {} \; > created
orphans=$(comm -1 -3 <(sort -u included) <(sort -u created))
if [[ -n "$orphans" ]]; then
printf 'ERROR: These adoc files are not included anywhere:\n-----\n%s\n-----\n' "$orphans"
@ -95,6 +89,24 @@ do
fi
done
ADOC_COUNT=$(find rules -name "tmp*.adoc" | wc -l)
if [[ $ADOC_COUNT ]]; then
if asciidoctor --failure-level=WARNING -o /dev/null rules/*/*/tmp*.adoc; then
if asciidoctor -a rspecator-view --failure-level=WARNING -o /dev/null rules/*/*/tmp*.adoc; then
echo "${ADOC_COUNT} documents checked with succes"
else
echo "ERROR: malformed asciidoc files in rspecator-view"
exit_code=1
fi
else
echo "ERROR: malformed asciidoc files"
exit_code=1
fi
else
echo "No new asciidoc file changed"
fi
if (( exit_code == 0 )); then
echo "Success"
else