Skip to content

Commit

Permalink
Added scripts to check clang-format
Browse files Browse the repository at this point in the history
  • Loading branch information
Fabian Sauter committed Sep 22, 2024
1 parent 3cbcacd commit 26a444f
Show file tree
Hide file tree
Showing 4 changed files with 85 additions and 7 deletions.
9 changes: 2 additions & 7 deletions .github/workflows/clang-format.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,9 @@ jobs:
steps:
- name: Update package list
run: sudo dnf update -y
- name: Install dependencies
run: sudo dnf install -y openssl-devel cmake git gcc clang ninja-build
- name: Install clang-tidy
- name: Install clang-format
run: sudo dnf install -y clang-tools-extra
- name: Checkout
uses: actions/checkout@v3
- name: Check format
uses: RafikFarhad/[email protected]
with:
sources: "include/**/*.hpp,include/**/*.cpp,cpr/**/*.hpp,cpr/**/*.cpp"
style: "file"
run: bash scripts/check_clang_format.sh
44 changes: 44 additions & 0 deletions scripts/check_clang_format.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
#!/bin/bash

# Based on: https://gist.github.com/leilee/1d0915a583f8f29414cc21cd86e7151b
# Checks if all files are formatted based on the clang-format formatting rules.
# Execute as follows:
# ./scripts/check_clang_format.sh tests src

printf "📑 Checking if your code fulfills all clang-format rules...\n"

RET_CODE=0

function format() {
for f in $(find $@ -name '*.h' -or -name '*.hpp' -or -name '*.c' -or -name '*.cpp'); do
clang-format -i --dry-run --Werror --style=file ${f};
ret=$?
if [ $ret -ne 0 ]; then
RET_CODE=$ret
fi
done

echo "~~~ $@ directory checked ~~~";
}

# Check all of the arguments first to make sure they're all directories
for dir in "$@"; do
if [ ! -d "${dir}" ]; then
echo "${dir} is not a directory";
else
format ${dir};
fi
done

RED='\033[0;31m'
GREEN='\033[0;32m'
NC='\033[0m'

if [ $RET_CODE -eq 0 ]; then
printf "${GREEN}Everything up to standard :party: ${NC}\n"
else
printf "${RED}Not up to formatting standard :sad_face: ${NC}\n"
echo "Try running run_clang_format.sh to format all files."
fi

exit $RET_CODE
9 changes: 9 additions & 0 deletions scripts/delete_build_dir.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#!/bin/bash

printf "🗑️ Clearing your build directory...\n"
rm -rf build/*

GREEN='\033[0;32m'
NC='\033[0m'

printf "${GREEN}Done. Build directory deleted.${NC}\n"
30 changes: 30 additions & 0 deletions scripts/run_clang_format.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#!/bin/bash

# Based on: https://gist.github.com/leilee/1d0915a583f8f29414cc21cd86e7151b
# Run from the project root directory as follows:
# ./scripts/run_clang_format.sh tests src

printf "📝 Running clang-format...\n"

function format() {
for f in $(find $@ -name '*.h' -or -name '*.hpp' -or -name '*.c' -or -name '*.cpp'); do
echo "format ${f}";
clang-format -i --style=file ${f};
done

echo "~~~ $@ directory formatted ~~~";
}

# Check all of the arguments first to make sure they're all directories
for dir in "$@"; do
if [ ! -d "${dir}" ]; then
echo "${dir} is not a directory";
else
format ${dir};
fi
done

GREEN='\033[0;32m'
NC='\033[0m'

printf "${GREEN}Done. All files were formatted (if required).${NC}\n"

0 comments on commit 26a444f

Please sign in to comment.