#!/bin/bash exec 1>&2 # paths to check and re-format sources="src unittests" formatter="clang-format -i" version=$($formatter --version | grep -o '[0-9\.]*') if [[ "17.0.0" > "$version" ]]; then cat < style grep_code '#include ".*"' | xargs sed -i -E 's|#include "(.*)"|#include <\1>|g' # make local includes to be "..." style for d in $(find ./src -maxdepth 1 -type d -execdir basename {} \;); do grep_code "#include <$d/.*>" | xargs sed -i -E "s|#include <($d/.*)>|#include \"\1\"|g" done first=$(git diff $sources) find $sources -type f \( -name '*.cpp' -o -name '*.h' -o -name '*.ipp' \) -print0 | xargs -0 $formatter second=$(git diff $sources) changes=$(diff <(echo "$first") <(echo "$second") | wc -l | sed -e 's/^[[:space:]]*//') if [ "$changes" != "0" ]; then cat <<\EOF WARNING ----------------------------------------------------------------------------- Automatically re-formatted code with `clang-format` - commit was aborted. Please manually add any updated files and commit again. ----------------------------------------------------------------------------- EOF exit 1 fi .githooks/ensure_release_tag