diff options
Diffstat (limited to 'tools/maint')
-rwxr-xr-x | tools/maint/coding_rules.sh | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/tools/maint/coding_rules.sh b/tools/maint/coding_rules.sh new file mode 100755 index 0000000..2f073f1 --- /dev/null +++ b/tools/maint/coding_rules.sh @@ -0,0 +1,84 @@ +#!/bin/bash + +RESET_COLOR="\e[39m" +ERROR_COLOR="\e[91m" + + +# Check if all Python API definitions end with expected suffixes +function check_python_api_doc_suffix() +{ + filename=$1 + + egrep -q '/(pychrysalide|python)/' <<< $filename + + if [ $? -eq 0 ]; then + + for name in $( grep 'PYTHON_METHOD_DEF' $filename | cut -d ' ' -f 2 ); + do + + if [[ "$name" != *_METHOD ]]; then + + echo -e "[!] ${ERROR_COLOR}${filename}${RESET_COLOR}: bad Python method declaration '$name'" + + fi + + done + + for target in "PYTHON_WRAPPER_DEF" "PYTHON_VOID_WRAPPER_DEF" \ + "PYTHON_FALSE_WRAPPER_DEF" "PYTHON_TRUE_WRAPPER_DEF"; do + + for name in $( grep $target $filename | cut -d ' ' -f 2 ); + do + + if [[ "$name" != *_WRAPPER ]]; then + + echo -e "[!] ${ERROR_COLOR}${filename}${RESET_COLOR}: bad Python wrapper declaration '$name'" + + fi + + done + + done + + for target in "PYTHON_GETSET_DEF" "PYTHON_CAN_DEF_FULL" "PYTHON_IS_DEF_FULL" "PYTHON_HAS_DEF_FULL" \ + "PYTHON_RAWGET_DEF_FULL" "PYTHON_GET_DEF_FULL" "PYTHON_GETSET_DEF_FULL"; do + + for name in $( grep $target $filename | cut -d ' ' -f 2 ); + do + + if [[ "$name" != *_ATTRIB ]]; then + + echo -e "[!] ${ERROR_COLOR}${filename}${RESET_COLOR}: bad Python attribute declaration '$name'" + + fi + + done + + done + + for name in $( grep 'PYTHON_GETTER_WRAPPER_DEF' $filename | cut -d ' ' -f 2 ); + do + + if [[ "$name" != *_ATTRIB_WRAPPER ]]; then + + echo -e "[!] ${ERROR_COLOR}${filename}${RESET_COLOR}: bad Python wrapper declaration '$name'" + + fi + + done + + fi + +} + + +if [ ! -f configure.ac ]; then + echo "This script has to be run from the top directory." + exit 1 +fi + +for file in $( find . -type f -name '*.c' -exec grep -l 'Copyright.*Cyrille Bagard$' {} \; ); +do + check_python_api_doc_suffix $file + +done |