#!/bin/bash # Simple script to check for clang-format compliance # Ensure we are at the project root cd "$(dirname $0)"/.. if [[ "$1" == "--pre-commit" ]]; then # used via .git/hooks/pre-commit: # exec "$(dirname $0)"/../../scripts/format-check.sh --pre-commit git-clang-format exit fi if [[ "$CI" == "true" ]]; then # used in ci, assumes clean repo clang-format -i $(find . -name '*.[ch]' -not -path "*subprojects/*") GIT_DIFF_OUTPUT=$(git diff) if [[ ! -z ${GIT_DIFF_OUTPUT} ]]; then echo "Failed clang format check:" echo "${GIT_DIFF_OUTPUT}" exit 1 else echo "Passed clang format check" exit 0 fi fi CLANG_FORMAT_OUTPUT=$(git-clang-format HEAD^ HEAD --diff) if [[ ! ${CLANG_FORMAT_OUTPUT} == "no modified files to format" ]] && [[ ! -z ${CLANG_FORMAT_OUTPUT} ]]; then echo "Failed clang format check:" echo "${CLANG_FORMAT_OUTPUT}" exit 1 else echo "Passed clang format check" exit 0 fi