diff --git a/.githooks/pre-commit b/.githooks/pre-commit index a2a39095..6712d7aa 100755 --- a/.githooks/pre-commit +++ b/.githooks/pre-commit @@ -12,7 +12,7 @@ if [[ "17.0.0" > "$version" ]]; then ERROR ----------------------------------------------------------------------------- - A minimum of version 16 of `clang-format` is required. + A minimum of version 17 of `clang-format` is required. Your version is $version. Please fix paths and run again. ----------------------------------------------------------------------------- @@ -25,13 +25,21 @@ function grep_code { grep -l "${1}" ${sources} -r --include \*.h --include \*.cpp } -# make all includes to be <...> style -grep_code '#include ".*"' | xargs sed -i -E 's|#include "(.*)"|#include <\1>|g' +if [[ "$OSTYPE" == "darwin"* ]]; then + # make all includes to be <...> 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 + # make local includes to be "..." style + main_src_dirs=$(find ./src -type d -d 1 -exec basename {} \; | paste -sd '|' | sed 's/|/\\|/g') + grep_code "#include <\($main_src_dirs\)/.*>" | xargs sed -i '' -E "s|#include <(($main_src_dirs)/.*)>|#include \"\1\"|g" +else + # make all includes to be <...> style + grep_code '#include ".*"' | xargs sed -i -E 's|#include "(.*)"|#include <\1>|g' + + # make local includes to be "..." style + main_src_dirs=$(find ./src -type d -d 1 -exec basename {} \; | paste -sd '|' | sed 's/|/\\|/g') + grep_code "#include <\($main_src_dirs\)/.*>" | xargs sed -i -E "s|#include <(($main_src_dirs)/.*)>|#include \"\1\"|g" +fi first=$(git diff $sources) find $sources -type f \( -name '*.cpp' -o -name '*.h' -o -name '*.ipp' \) -print0 | xargs -0 $formatter diff --git a/.github/actions/clang_format/action.yml b/.github/actions/clang_format/action.yml index dde033e0..e881eae6 100644 --- a/.github/actions/clang_format/action.yml +++ b/.github/actions/clang_format/action.yml @@ -17,7 +17,7 @@ runs: - name: Run formatter run: | - find src unittests -type f \( -name '*.cpp' -o -name '*.h' -o -name '*.ipp' \) -print0 | xargs -0 clang-format-17 -i + ./.githooks/pre-commit shell: bash - name: Check for differences