mirror of
https://github.com/thorvg/thorvg.git
synced 2025-06-08 13:43:43 +00:00

Add a bot that checks the coding style using cpplint and reports the result as a review comment. This feature refers to the repository where cpplint and docker settings with github-action. This action works whenever a PR is created and updated. In cpplint, only the violation of ThorVG's coding style is reported as a warning using several options. whitespace/parens whitespace/indent whitespace/end_of_line whitespace/blank_line The bot will review all of the contents of all files in the current commit file list, However, in the future, we will improve Bot to only review the changes.
59 lines
1.3 KiB
Bash
59 lines
1.3 KiB
Bash
#!/bin/bash
|
|
|
|
if [[ -z "$GITHUB_TOKEN" ]]; then
|
|
echo "The GITHUB_TOKEN is required."
|
|
exit 1
|
|
fi
|
|
|
|
FILES_LINK=`jq -r '.pull_request._links.self.href' "$GITHUB_EVENT_PATH"`/files
|
|
echo "Files = $FILES_LINK"
|
|
|
|
curl $FILES_LINK > files.json
|
|
FILES_URLS_STRING=`jq -r '.[].raw_url' files.json`
|
|
|
|
readarray -t URLS <<<"$FILES_URLS_STRING"
|
|
|
|
echo "File names: $URLS"
|
|
|
|
mkdir files
|
|
cd files
|
|
for i in "${URLS[@]}"
|
|
do
|
|
echo "Downloading $i"
|
|
curl -LOk --remote-name $i
|
|
done
|
|
|
|
echo "Files downloaded!"
|
|
echo "Performing checkup:"
|
|
|
|
cpplint --filter=-,\
|
|
+whitespace/parens,\
|
|
+whitespace/indent,\
|
|
+whitespace/end_of_line,\
|
|
+whitespace/blank_line \
|
|
--extension=cpp,h,c \
|
|
--recursive \
|
|
./ > cpp-report.txt 2>&1
|
|
|
|
PAYLOAD_CPPLINT=`cat cpp-report.txt`
|
|
COMMENTS_URL=$(cat $GITHUB_EVENT_PATH | jq -r .pull_request.comments_url)
|
|
|
|
echo $COMMENTS_URL
|
|
echo "Cppcheck errors:"
|
|
echo $PAYLOAD_CPPLINT
|
|
|
|
if [[ $PAYLOAD_CPPLINT == *"Total errors found: "* ]]; then
|
|
OUTPUT+=$'\n**CODING STYLE CHECK**:\n'
|
|
OUTPUT+=$'\n```\n'
|
|
OUTPUT+="$PAYLOAD_CPPLINT"
|
|
OUTPUT+=$'\n```\n'
|
|
|
|
else
|
|
OUTPUT+=$'\n**CODING STYLE CHECK**:\n'
|
|
OUTPUT+=$'\n```\n'
|
|
OUTPUT+="Perfect."
|
|
OUTPUT+=$'\n```\n'
|
|
fi
|
|
PAYLOAD=$(echo '{}' | jq --arg body "$OUTPUT" '.body = $body')
|
|
|
|
curl -s -S -H "Authorization: token $GITHUB_TOKEN" --header "Content-Type: application/vnd.github.VERSION.text+json" --data "$PAYLOAD" "$COMMENTS_URL"
|