2016-02-01 09:36:08 -05:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
2016-10-18 17:05:20 -04:00
|
|
|
set -o errexit
|
|
|
|
set -o pipefail
|
|
|
|
set -o nounset
|
|
|
|
|
2016-02-01 09:36:08 -05:00
|
|
|
# Runs the Clang Formatter in parallel on the code base.
|
|
|
|
# Return codes:
|
|
|
|
# - 1 there are files to be formatted
|
|
|
|
# - 0 everything looks fine
|
|
|
|
|
2016-07-20 15:10:07 -04:00
|
|
|
# Get CPU count
|
|
|
|
OS=$(uname)
|
|
|
|
NPROC=1
|
|
|
|
if [[ $OS = "Linux" ]] ; then
|
|
|
|
NPROC=$(nproc)
|
|
|
|
elif [[ ${OS} = "Darwin" ]] ; then
|
|
|
|
NPROC=$(sysctl -n hw.physicalcpu)
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Discover clang-format
|
|
|
|
if type clang-format-3.8 2> /dev/null ; then
|
|
|
|
CLANG_FORMAT=clang-format-3.8
|
|
|
|
elif type clang-format 2> /dev/null ; then
|
|
|
|
# Clang format found, but need to check version
|
|
|
|
CLANG_FORMAT=clang-format
|
|
|
|
V=$(clang-format --version)
|
|
|
|
if [[ $V != *3.8* ]] ; then
|
|
|
|
echo "clang-format is not 3.8 (returned ${V})"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
echo "No appropriate clang-format found (expected clang-format-3.8, or clang-format)"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
2016-02-01 09:36:08 -05:00
|
|
|
find src include unit_tests example -type f -name '*.hpp' -o -name '*.cpp' \
|
2016-07-20 15:10:07 -04:00
|
|
|
| xargs -I{} -P ${NPROC} ${CLANG_FORMAT} -i -style=file {}
|
2016-02-01 09:36:08 -05:00
|
|
|
|
|
|
|
|
|
|
|
dirty=$(git ls-files --modified)
|
|
|
|
|
|
|
|
if [[ $dirty ]]; then
|
|
|
|
echo "The following files do not adhere to the .clang-format style file:"
|
|
|
|
echo $dirty
|
|
|
|
exit 1
|
|
|
|
else
|
|
|
|
exit 0
|
|
|
|
fi
|