#!/bin/bash # The version check in this script is used to avoid commit battles # between different developers that use different astyle versions as # different versions might have different output (this has happened in # the past). # If project management wishes to take a newer astyle version into use # just change this string to match the start of astyle version string. ASTYLE_VERSION="3.0.1" ASTYLE="${ASTYLE-astyle}" DETECTED_VERSION=$("$ASTYLE" --version 2>&1 | awk '{ print $NF; }') if [ "$DETECTED_VERSION" != "${ASTYLE_VERSION}" ]; then echo "You should use version: ${ASTYLE_VERSION}" echo "Detected version: ${DETECTED_VERSION}" exit 1 fi RCFILE=.astylerc # # Functions to format C/C++ source code # function formatCplusplus { "$ASTYLE" --options=$RCFILE "$1" } function formatCplusplusRecursive { RCFILE=.astylerc "$ASTYLE" --options=$RCFILE --recursive "$1" } # # Function to format XML files # function formatXML { xmllint --format -o "$1_" "$1" if cmp -s "$1_" "$1"; then rm -f "$1_" echo Unchanged $1 else mv -f "$1_" "$1" echo Formatted $1 fi } formatCplusplus "cli/*.cpp" formatCplusplus "cli/*.h" formatCplusplus "democlient/*.cpp" formatCplusplus "gui/*.cpp" formatCplusplus "gui/*.h" formatCplusplusRecursive "gui/test/*.cpp" formatCplusplusRecursive "gui/test/*.h" formatCplusplus "lib/*.cpp" formatCplusplus "lib/*.h" formatCplusplus "oss-fuzz/*.cpp" formatCplusplus "oss-fuzz/*.h" formatCplusplus "test/*.cpp" formatCplusplus "test/cfg/*.c" formatCplusplus "test/cfg/*.cpp" formatCplusplus "test/*.h" formatCplusplus "tools/*.cpp" formatCplusplusRecursive "tools/*.h" formatCplusplusRecursive "samples/*.c" formatCplusplusRecursive "samples/*.cpp" # format config files # TODO: use other tool than xmllint? use tabs instead of spaces? for CFGFILE in cfg/*.cfg do formatXML "$CFGFILE" done for PLATFORMFILE in platforms/*.xml do formatXML "$PLATFORMFILE" done formatXML man/cppcheck.1.xml formatXML cppcheck-errors.rng