mirror of
https://github.com/intel/isa-l.git
synced 2024-12-13 09:52:56 +01:00
07bca509e7
Signed-off-by: Marcel Cornu <marcel.d.cornu@intel.com>
104 lines
2.7 KiB
Bash
Executable File
104 lines
2.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -e
|
|
rc=0
|
|
verbose=0
|
|
clang_format_min_version=18
|
|
|
|
function clang_format_version() {
|
|
version_str=$($clang_format --version)
|
|
regex="[0-9]+"
|
|
if [[ $version_str =~ $regex ]]; then
|
|
major_version="${BASH_REMATCH[0]}"
|
|
echo $major_version
|
|
fi
|
|
}
|
|
|
|
# set clang-format binary if not set externally
|
|
if [[ -z $CLANGFORMAT ]]; then
|
|
clang_format="clang-format"
|
|
else
|
|
clang_format=$CLANGFORMAT
|
|
fi
|
|
|
|
while [ -n "$*" ]; do
|
|
case "$1" in
|
|
-v )
|
|
verbose=1
|
|
shift
|
|
;;
|
|
-h )
|
|
echo check_format.sh [-h -v]
|
|
exit 0
|
|
;;
|
|
esac
|
|
done
|
|
|
|
echo "Checking format of files in the git index at $PWD"
|
|
if ! git rev-parse --is-inside-work-tree >& /dev/null; then
|
|
echo "Not in a git repo: Fail"
|
|
exit 1
|
|
fi
|
|
|
|
if [ $(clang_format_version) -ge $clang_format_min_version ]; then
|
|
echo "Checking C files for coding style (clang-format v$(clang_format_version))..."
|
|
for f in `git ls-files '*.[c|h]'`; do
|
|
[ "$verbose" -gt 0 ] && echo "checking style on $f"
|
|
if ! $clang_format -style=file --dry-run --Werror "$f" >/dev/null 2>&1; then
|
|
echo " File found with formatting issues: $f"
|
|
[ "$verbose" -gt 0 ] && $clang_format -style=file --dry-run "$f"
|
|
rc=1
|
|
fi
|
|
done
|
|
[ "$rc" -gt 0 ] && echo " Run ./tools/format.sh to fix formatting issues"
|
|
else
|
|
echo "You do not have clang-format version ${clang_format_min_version}+" \
|
|
"installed so your code style is not being checked!"
|
|
fi
|
|
|
|
if hash grep; then
|
|
echo "Checking for dos and whitespace violations..."
|
|
for f in $(git ls-files); do
|
|
[ "$verbose" -gt 0 ] && echo "checking whitespace on $f"
|
|
if grep -q '[[:space:]]$' $f ; then
|
|
echo " File found with trailing whitespace: $f"
|
|
rc=1
|
|
fi
|
|
if grep -q $'\r' $f ; then
|
|
echo " File found with dos formatting: $f"
|
|
rc=1
|
|
fi
|
|
done
|
|
fi
|
|
|
|
echo "Checking source files for permissions..."
|
|
while read -r perm _res0 _res1 f; do
|
|
[ -z "$f" ] && continue
|
|
[ "$verbose" -gt 0 ] && echo "checking permissions on $f"
|
|
if [ "$perm" -ne 100644 ]; then
|
|
echo " File found with permissions issue ($perm): $f"
|
|
rc=1
|
|
fi
|
|
done <<< $(git ls-files -s -- ':(exclude)*.sh')
|
|
|
|
echo "Checking script files for permissions..."
|
|
while read -r perm _res0 _res1 f; do
|
|
[ -z "$f" ] && continue
|
|
[ "$verbose" -gt 0 ] && echo "checking permissions on $f"
|
|
if [ "$perm" -ne 100755 ]; then
|
|
echo " Script found with permissions issue ($perm): $f"
|
|
rc=1
|
|
fi
|
|
done <<< $(git ls-files -s '*.sh')
|
|
|
|
|
|
echo "Checking for signoff in commit message..."
|
|
if ! git log -n 1 --format=%B --no-merges | grep -q "^Signed-off-by:" ; then
|
|
echo " Commit not signed off. Please read src/CONTRIBUTING.md"
|
|
rc=1
|
|
fi
|
|
|
|
[ "$rc" -gt 0 ] && echo Format Fail || echo Format Pass
|
|
|
|
exit $rc
|