summaryrefslogtreecommitdiff
path: root/tests/test-format.sh
blob: fd3201d0db39db9c39f4fc53f1a1a09c2e51b77c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/bin/sh

set -e

if [ -z "$GITHUB_BASE_REF" ]
then
  echo "This script is only meant to be run in a GitHub Workflow"
  exit 1
fi

CHANGED_FILES=$(git diff --name-only "$GITHUB_BASE_REF"...HEAD)

CHANGED=0

for file in $CHANGED_FILES
do
  [ -e "$file" ] || continue
  case "$file" in
  src/libs/*|src/FreeRTOS/*) continue ;;
  *.cpp|*.h)
    echo Checking "$file"
    PATCH="$(basename "$file").patch"
    git clang-format-12 -q --style file --diff "$GITHUB_BASE_REF" "$file" > "$PATCH"
    if [ -s "$PATCH" ]
    then
      printf "\033[31mError:\033[0m Formatting error in %s\n" "$file"
      CHANGED=1
    else
      rm "$PATCH"
    fi
  esac
done

if [ $CHANGED = 1 ]
then
  printf "\033[31mError:\033[0m Issues found. You may use the patches provided as artifacts to format the code."
  exit 1
fi

exit 0