26 lines
842 B
Bash
26 lines
842 B
Bash
#!/usr/bin/env bash
|
|
|
|
set -euo pipefail
|
|
|
|
# Run formatter from repository root regardless of current directory.
|
|
REPO_ROOT="$(git rev-parse --show-toplevel)"
|
|
cd "${REPO_ROOT}"
|
|
|
|
# Capture the files already staged for commit so we only re-stage those
|
|
# paths after formatting.
|
|
staged_files=()
|
|
while IFS= read -r -d '' file; do
|
|
staged_files+=("${file}")
|
|
done < <(git diff --cached --name-only -z --diff-filter=ACMR)
|
|
|
|
# Intentionally format all currently modified tracked C/C++ files.
|
|
# The helper handles no-op cases and exits 0 when nothing matches.
|
|
echo "Running clang-format fix before commit..."
|
|
./bin/clang-format-fix
|
|
|
|
# Ensure formatting changes are included in the pending commit without
|
|
# staging unrelated tracked modifications from other files in the
|
|
# working tree.
|
|
if ((${#staged_files[@]})); then
|
|
git add -- "${staged_files[@]}"
|
|
fi |