QGIS/tests/code_layout/test_doxygen_layout.sh
Sandro Santilli 07345e52c4 Run doxygen layout checker in prepare-commit script, when possible
Helps preventing useless CI wait like in here:
https://github.com/qgis/QGIS/actions/runs/6518501862/job/17703989815?pr=54934

Allow passing list of files to check to test_doxygen_layout.sh script
2023-10-23 13:15:57 +10:00

32 lines
1.5 KiB
Bash
Executable File

#!/usr/bin/env bash
PATHS=${@-"$(cd $(dirname "$0")/../../ && pwd)"}
echo "Checking doxygen layout in ${PATHS}"
# check that \return(s) is placed before \note and \since
output=$(unbuffer ag --noaffinity --file-search-regex '\.h$' --multiline '\\(note|since)[^\n]+(\n\s*\* [^\n]+)*\n\s*\* \\return' ${PATHS} | tee /dev/stderr)
if [[ -n $output ]]; then
echo -e "\n\x1B[31m*** Docstring computation: \\\return(s) should be placed before \\\note and \\since\x1B[0m"
exit 1
fi
# check that \since and \deprecated are placed at the end of the command block
output=$(unbuffer ag --noaffinity --file-search-regex '\.h$' --multiline '(\\(deprecated|since)[^\n]+\n)+\s*\*[^\/](?!\s*\\(deprecated|since))' ${PATHS} | tee /dev/stderr)
if [[ -n $output ]]; then
echo -e "\n\x1B[31m*** Docstring computation: \\\deprecated and \\\since should be placed at the end of command blocks\x1B[0m"
echo -e "To fix it, you may want to run (multiple times) at the top level directory:"
echo 'sed -i -r '"'"'$!N;s/^(\s*\*\s+\\(deprecated|since)[^\n]+)\n(\s*\*([^\/].*|$))/\3\n\1/;P;D'"'"' $(ag -c --noaffinity --file-search-regex '"'"'\.h$'"'"' --multiline '"'"'(\\(deprecated|since)[^\n]+\n)+\s*\*[^\/]'"'"' . | cut -d: -f1)'
exit 1
fi
# code snippets command
output=$(unbuffer ag --noaffinity --file-search-regex '\.h$' --multiline '~~~\{\.\w+\}' ${PATHS} | tee /dev/stderr)
if [[ -n $output ]]; then
echo -e "\n\x1B[31m*** Docstring computation: code snippets should use \\\code{.xx} rather than ~~~{.xx} \x1B[0m"
exit 1
fi