| #!/bin/bash |
| |
| set -o errexit |
| set -o pipefail |
| |
| if [ -n "$1" ]; then |
| BRANCH="$1" |
| elif [ "$CI" != "true" ]; then |
| echo "Please specify a base branch in the command line" |
| exit 1 |
| elif [ -n "$GITHUB_EVENT_BEFORE" ] && [ "push" = "$GITHUB_EVENT_NAME" ]; then |
| BRANCH="$GITHUB_EVENT_BEFORE" |
| elif [ -n "$GITHUB_BASE_REF" ]; then |
| BRANCH="origin/$GITHUB_BASE_REF" |
| elif git symbolic-ref -q HEAD; then # check if we're in a branch |
| BRANCH="@{upstream}" |
| else |
| # in a detached HEAD. |
| # default to origin/main, this is a "last resort" to make this script do the |
| # right thing, and is only really here so it works when pushing a new branch, |
| # with the caveat that it assumes the base branch to be called "main". |
| # (this has been the case with wabt for a while. may fail if the repo lacks a |
| # "main" branch for some reason.) |
| BRANCH="origin/main" |
| fi |
| |
| MERGE_BASE=$(git merge-base $BRANCH HEAD) |
| if ! git clang-format $MERGE_BASE -q --diff -- src/ 2>&1 >/dev/null; then |
| echo "Please run git clang-format before committing, or apply this diff:" |
| echo |
| # Run git clang-format again, this time with output. This lets us add |
| # the above message. |
| git clang-format $MERGE_BASE -q --diff -- src/ |
| exit 1 |
| fi |