| #!/bin/bash |
| |
| set -o errexit |
| set -o pipefail |
| |
| if [ -n "$1" ]; then |
| BRANCH="$1" |
| elif [ -n "$GITHUB_BASE_REF" ]; then |
| BRANCH="origin/$GITHUB_BASE_REF" |
| else |
| BRANCH="@{upstream}" |
| fi |
| |
| LLVM_VERSION=${LLVM_VERSION:=17} |
| |
| MERGE_BASE=$(git merge-base $BRANCH HEAD) |
| FORMAT_ARGS="--binary=clang-format-${LLVM_VERSION} ${MERGE_BASE}" |
| FORMAT_MSG=$(git clang-format ${FORMAT_ARGS} -q --diff) |
| if [ -n "$FORMAT_MSG" -a "$FORMAT_MSG" != "no modified files to format" ] |
| then |
| echo "Please run git clang-format with clang-format-${LLVM_VERSION} before committing, or apply this diff:" |
| echo |
| # Run git clang-format again, this time without capruting stdout. This way |
| # clang-format format the message nicely and add color. |
| git clang-format ${FORMAT_ARGS} -q --diff |
| exit 1 |
| fi |