| #!/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 --name-only --diff-filter=ACM | grep '\.cpp$\|\.hpp\|\.c$\|\.h$') | |
| for FILE in $FILES | |
| do | |
| ${CLANG_FORMAT} -i -style=file "$BASEDIR/$FILE" | |
| done | |
| fi |