63 rader
1.4 KiB
Bash
63 rader
1.4 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
set -euo pipefail
|
|
|
|
RANGE=""
|
|
|
|
while [[ $# -gt 0 ]]; do
|
|
echo $1
|
|
echo $2
|
|
case "$1" in
|
|
--range)
|
|
RANGE="$2"
|
|
shift 2
|
|
;;
|
|
*)
|
|
echo "Unknown arg $1" >&2
|
|
exit 64
|
|
;;
|
|
esac
|
|
done
|
|
|
|
regex='\.(c|cc|cpp|cxx|h|hh|hpp|hxx)$'
|
|
|
|
clang_bin="${CLANG_FORMAT:-clang-format}"
|
|
if ! command -v "$clang_bin" >/dev/null 2>&1; then
|
|
if [[ -x "/c/Program Files/LLVM/bin/clang-format.exe" ]]; then
|
|
clang_bin="/c/Program Files/LLVM/bin/clang-format.exe"
|
|
fi
|
|
fi
|
|
|
|
clang_format_diff="${CLANG_FORMAT_DIFF:-clang-format-diff}"
|
|
if ! command -v "$clang_format_diff" >/dev/null 2>&1; then
|
|
if [[ -x "/c/Program Files/LLVM/share/clang/clang-format-diff.py" ]]; then
|
|
clang_format_diff="/c/Program Files/LLVM/share/clang/clang-format-diff.py"
|
|
fi
|
|
fi
|
|
|
|
directories=(projects/hip projects/clr projects/hipother projects/hip-tests)
|
|
|
|
for dir in ${array[*]}; do
|
|
cd $dir
|
|
if [[ -n $RANGE ]]; then
|
|
files=$(git diff --name-only "$RANGE" . | grep -E "$regex" || true)
|
|
else
|
|
files=$(git diff --cached --name-only --diff-filter=ACMR . | grep -E "$regex" || true)
|
|
fi
|
|
echo "Checking $files"
|
|
[[ -z $files ]] && exit 0
|
|
|
|
for file in $files; do
|
|
echo "Checking lines of $file"
|
|
|
|
if [[ -n $RANGE ]]; then
|
|
diff_output=$(git diff -U0 "$RANGE" -- "$file")
|
|
else
|
|
diff_output=$(git diff -U0 --cached -- "$file")
|
|
fi
|
|
|
|
echo "$diff_output" | "$clang_format_diff" -style=file -fallback-style=none -p1
|
|
done
|
|
cd ..
|
|
done
|