mirror of
https://github.com/pybind/pybind11.git
synced 2024-11-25 06:35:12 +00:00
d080f833be
./tools/check-style.sh fails on stock OS X currently; this fixes it: - use pipes directly rather than exec redirection (macOS's ancient version of bash fails with the latter) - macOS's ancient bash doesn't support '\e' escapes in `echo -e`; replace with \033 instead - BSD grep doesn't support GREP_COLORS, but does allow GREP_COLOR. Adding both doesn't hurt GNU grep: GREP_COLOR is deprecated, and won't be used when GREP_COLORS is set. - BSD grep doesn't collapse multiple /'s in the listed filename, so failures under `include/` would should up as `include//pybind11/whatever.h`. This removes the / from the include directory argument. Minor other changes: - The CRLF detection runs with -l, so GREP_COLORS wasn't doing anything; removed it. - The trailing whitespace test would trigger on CRLFs, but the CR would result in messed up output. Changed the test to just match trailing spaces and tabs, rather than all whitespace.
83 lines
2.3 KiB
Bash
Executable File
83 lines
2.3 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# Script to check include/test code for common pybind11 code style errors.
|
|
#
|
|
# This script currently checks for
|
|
#
|
|
# 1. use of tabs instead of spaces
|
|
# 2. MSDOS-style CRLF endings
|
|
# 3. trailing spaces
|
|
# 4. missing space between keyword and parenthesis, e.g.: for(, if(, while(
|
|
# 5. Missing space between right parenthesis and brace, e.g. 'for (...){'
|
|
# 6. opening brace on its own line. It should always be on the same line as the
|
|
# if/while/for/do statment.
|
|
#
|
|
# Invoke as: tools/check-style.sh
|
|
#
|
|
|
|
errors=0
|
|
IFS=$'\n'
|
|
found=
|
|
# The mt=41 sets a red background for matched tabs:
|
|
GREP_COLORS='mt=41' GREP_COLOR='41' grep $'\t' include tests/*.{cpp,py,h} docs/*.rst -rn --color=always |
|
|
while read f; do
|
|
if [ -z "$found" ]; then
|
|
echo -e '\033[31m\033[01mError: found tabs instead of spaces in the following files:\033[0m'
|
|
found=1
|
|
errors=1
|
|
fi
|
|
|
|
echo " $f"
|
|
done
|
|
|
|
found=
|
|
grep -IUlr $'\r' include tests/*.{cpp,py,h} docs/*.rst --color=always |
|
|
while read f; do
|
|
if [ -z "$found" ]; then
|
|
echo -e '\033[31m\033[01mError: found CRLF characters in the following files:\033[0m'
|
|
found=1
|
|
errors=1
|
|
fi
|
|
|
|
echo " $f"
|
|
done
|
|
|
|
found=
|
|
# The mt=41 sets a red background for matched trailing spaces
|
|
GREP_COLORS='mt=41' GREP_COLOR='41' grep '[[:blank:]]\+$' include tests/*.{cpp,py,h} docs/*.rst -rn --color=always |
|
|
while read f; do
|
|
if [ -z "$found" ]; then
|
|
echo -e '\033[31m\033[01mError: found trailing spaces in the following files:\033[0m'
|
|
found=1
|
|
errors=1
|
|
fi
|
|
|
|
echo " $f"
|
|
done
|
|
|
|
found=
|
|
grep '\<\(if\|for\|while\|catch\)(\|){' include tests/*.{cpp,py,h} -rn --color=always |
|
|
while read line; do
|
|
if [ -z "$found" ]; then
|
|
echo -e '\033[31m\033[01mError: found the following coding style problems:\033[0m'
|
|
found=1
|
|
errors=1
|
|
fi
|
|
|
|
echo " $line"
|
|
done
|
|
|
|
found=
|
|
GREP_COLORS='mt=41' GREP_COLOR='41' grep '^\s*{\s*$' include docs/*.rst -rn --color=always |
|
|
while read f; do
|
|
if [ -z "$found" ]; then
|
|
echo -e '\033[31m\033[01mError: braces should occur on the same line as the if/while/.. statement. Found issues in the following files: \033[0m'
|
|
found=1
|
|
errors=1
|
|
fi
|
|
|
|
echo " $f"
|
|
done
|
|
|
|
exit $errors
|