blob: f68c60a818a1b8befc4fc0b5cc2d3859d18cdf0c [file] [log] [blame]
#!/bin/bash
SRC_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
ROOT_DIR="$( cd "${SRC_DIR}/.." >/dev/null 2>&1 && pwd )"
TESTS_DIR="$( cd "${ROOT_DIR}/tests" >/dev/null 2>&1 && pwd )"
CLANG_FORMAT=${CLANG_FORMAT:-clang-format}
${CLANG_FORMAT} --version
show_help()
{
# Tells cat to stop reading file when EOF is detected
cat << EOF
Usage: ./clang-format-all.sh [-ah]
Format files in the SwiftShader repository
-h, --help Display this message and exit
-a, --all Format all files (default is to format only files active in a git CL)
EOF
# cat finishes printing
}
while [[ $# -gt 0 ]]
do
case $1 in
-a|--all)
all=1
shift
;;
-h|--help)
show_help
exit 0
;;
esac
done
if [[ $all -eq 1 ]]
then
for DIR in "${SRC_DIR}/Device" "${SRC_DIR}/Pipeline" "${SRC_DIR}/Reactor" "${SRC_DIR}/System" "${SRC_DIR}/Vulkan" "${SRC_DIR}/WSI" "${TESTS_DIR}"
do
# Double clang-format, as it seems that one pass isn't always enough
find ${DIR} -iname "*.hpp" -o -iname "*.cpp" -o -iname "*.inl" | xargs ${CLANG_FORMAT} -i -style=file
find ${DIR} -iname "*.hpp" -o -iname "*.cpp" -o -iname "*.inl" | xargs ${CLANG_FORMAT} -i -style=file
done
else
BASEDIR=$(git rev-parse --show-toplevel)
FILES=$(git diff --cached --name-only --diff-filter=ACM | grep '\.cpp$\|\.hpp\|\.c$\|\.h$')
for FILE in $FILES
do
${CLANG_FORMAT} -i -style=file "$BASEDIR/$FILE"
done
fi