diff --git a/.githooks/pre-commit b/.githooks/pre-commit new file mode 100755 index 0000000..48fc8a5 --- /dev/null +++ b/.githooks/pre-commit @@ -0,0 +1,28 @@ +#!/usr/bin/env bash + +set -e + +BUILD_DIR="build" + +FILES=$(git diff --cached --name-only --diff-filter=ACM | grep -E '\.(cpp|hpp)$' | grep -v 'deps/' || true) + +if [ -z "$FILES" ]; then + echo "No C/C++ files to check" + exit 0 +fi + +echo "Running clang-format..." + +git diff -U0 --cached -- $FILES | \ +python3 <(curl -s https://raw.githubusercontent.com/llvm/llvm-project/refs/heads/main/clang/tools/clang-format/clang-format-diff.py) -p1 -i + +echo "Running clang-tidy..." + +for file in $FILES; do + clang-tidy \ + "$file" \ + --header-filter="^(?!.*deps/).*" \ + -p "$BUILD_DIR" +done + +echo "pre-commit checks passed" diff --git a/.githooks/pre-push b/.githooks/pre-push new file mode 100755 index 0000000..2112ce5 --- /dev/null +++ b/.githooks/pre-push @@ -0,0 +1,15 @@ +#!/usr/bin/env bash + +set -e + +BUILD_DIR="build" + +echo "Building..." + +cmake --build "$BUILD_DIR" + +echo "Running tests..." + +ctest --test-dir "$BUILD_DIR" --output-on-failure + +echo "pre-push checks passed" \ No newline at end of file