Some checks failed
Conan Packaging / Package Bin2CPP/1.0.0 (push) Has been cancelled
Bin2CPP / Build & Test Debug with ./ConanProfiles/clangd (Unity Build: OFF) (push) Has been cancelled
Bin2CPP / Build & Test Debug with ./ConanProfiles/clangd (Unity Build: ON) (push) Has been cancelled
Bin2CPP / Build & Test Debug with ./ConanProfiles/clangd_asan (Unity Build: OFF) (push) Has been cancelled
Bin2CPP / Build & Test Debug with ./ConanProfiles/clangd_asan (Unity Build: ON) (push) Has been cancelled
Bin2CPP / Build & Test RelWithDebInfo with ./ConanProfiles/clang (Unity Build: OFF) (push) Has been cancelled
Bin2CPP / Build & Test RelWithDebInfo with ./ConanProfiles/clang (Unity Build: ON) (push) Has been cancelled
Bin2CPP / Build & Test RelWithDebInfo with ./ConanProfiles/clangd (Unity Build: OFF) (push) Has been cancelled
Bin2CPP / Build & Test RelWithDebInfo with ./ConanProfiles/clangd (Unity Build: ON) (push) Has been cancelled
Bin2CPP / Build & Test RelWithDebInfo with ./ConanProfiles/clangd_asan (Unity Build: OFF) (push) Has been cancelled
Bin2CPP / Build & Test Release with ./ConanProfiles/clangd (Unity Build: ON) (push) Has been cancelled
Bin2CPP / Build & Test Release with ./ConanProfiles/clangd_asan (Unity Build: OFF) (push) Has been cancelled
Bin2CPP / Build & Test Debug with ./ConanProfiles/clang (Unity Build: ON) (push) Has been cancelled
Bin2CPP / Build & Test RelWithDebInfo with ./ConanProfiles/clangd_asan (Unity Build: ON) (push) Has been cancelled
Bin2CPP / Build & Test Release with ./ConanProfiles/clang (Unity Build: OFF) (push) Has been cancelled
Bin2CPP / Build & Test Release with ./ConanProfiles/clang (Unity Build: ON) (push) Has been cancelled
Bin2CPP / Build & Test Release with ./ConanProfiles/clangd (Unity Build: OFF) (push) Has been cancelled
Bin2CPP / Build & Test Release with ./ConanProfiles/clangd_asan (Unity Build: ON) (push) Has been cancelled
Bin2CPP / Clang Format Checks (push) Has been cancelled
Bin2CPP / Build & Test Debug with ./ConanProfiles/clang (Unity Build: OFF) (push) Has been cancelled
Bin2CPP / Sonarqube (push) Has been cancelled
Reviewed-on: #2 Co-authored-by: Romain BOULLARD <romain.boullard@protonmail.com> Co-committed-by: Romain BOULLARD <romain.boullard@protonmail.com>
69 lines
1.5 KiB
Bash
Executable File
69 lines
1.5 KiB
Bash
Executable File
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
FMT="clang-format"
|
|
MODE=""
|
|
DIRS=()
|
|
EXIT_CODE=0
|
|
|
|
# =========================
|
|
# Parse arguments
|
|
# =========================
|
|
for arg in "$@"; do
|
|
case "$arg" in
|
|
--check)
|
|
MODE="check"
|
|
;;
|
|
--fix)
|
|
MODE="fix"
|
|
;;
|
|
*)
|
|
DIRS+=("$arg")
|
|
;;
|
|
esac
|
|
done
|
|
|
|
# Ensure mode is set
|
|
if [[ -z "$MODE" ]]; then
|
|
echo "Usage: $0 --check|--fix <directory> [<directory> ...]"
|
|
exit 1
|
|
fi
|
|
|
|
# Ensure at least one directory
|
|
if [[ ${#DIRS[@]} -eq 0 ]]; then
|
|
echo "Please provide at least one directory."
|
|
exit 1
|
|
fi
|
|
|
|
# =========================
|
|
# Process directories
|
|
# =========================
|
|
for DIR in "${DIRS[@]}"; do
|
|
if [[ ! -d "$DIR" ]]; then
|
|
echo "$DIR is not a valid directory."
|
|
EXIT_CODE=1
|
|
continue
|
|
fi
|
|
|
|
# Find all source files safely (null-separated)
|
|
while IFS= read -r -d '' FILE; do
|
|
[[ "$FILE" == *_generated* ]] && continue
|
|
|
|
if [[ "$MODE" == "fix" ]]; then
|
|
echo "Formatting $FILE"
|
|
"$FMT" -i "$FILE"
|
|
else
|
|
echo "Checking $FILE"
|
|
# Check mode: clang-format diagnostic only
|
|
if ! "$FMT" --dry-run --Werror "$FILE"; then
|
|
# clang-format prints: file:line:col: error ...
|
|
EXIT_CODE=1
|
|
fi
|
|
fi
|
|
done < <(
|
|
find "$DIR" \( -name '*.h' -o -name '*.hpp' -o -name '*.c' -o -name '*.cpp' -o -name '*.m' -o -name '*.mm' \) -print0
|
|
)
|
|
done
|
|
|
|
exit $EXIT_CODE
|