From e99416456afd4aa8bde42016826f9a345291cbf3 Mon Sep 17 00:00:00 2001 From: Matthew Poletiek Date: Tue, 8 Dec 2020 21:03:16 -0600 Subject: Initial Commit --- tools/checkpatch.sh | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100755 tools/checkpatch.sh (limited to 'tools/checkpatch.sh') diff --git a/tools/checkpatch.sh b/tools/checkpatch.sh new file mode 100755 index 0000000..5cf3a6f --- /dev/null +++ b/tools/checkpatch.sh @@ -0,0 +1,72 @@ +#!/usr/bin/env bash +# +# CHIRP coding standards compliance script +# +# To add a test to this file, create a new check_foo() function +# and then add it to the list of TESTS= below +# + +TESTS="check_long_lines check_bug_number check_commit_message_line_length" + +function check_long_lines() { + local rev="$1" + local files="$2" + + # For now, ignore this check on chirp/ + files=$(echo $files | sed -r 's#\bchirp[^ ]*\b##') + + if [ -z "$files" ]; then + return + fi + + pep8 --select=E501 $files || \ + error "Please use <80 columns in source files" +} + +function check_bug_number() { + local rev="$1" + hg log -vr $rev | grep -qE '#[0-9]+' || \ + error "A bug number is required like #123" +} + +function _less_than_80() { + while true; do + read line + if [ -z "$line" ]; then + break + elif [ $(echo -n "$line" | wc -c) -ge 80 ]; then + return 1 + fi + done +} + +function check_commit_message_line_length() { + local rev="$1" + hg log -vr $rev | (_less_than_80) || \ + error "Please keep commit message lines to <80 columns" +} + +# --- END OF TEST FUNCTIONS --- + +function error() { + echo FAIL: $* + ERROR=1 +} + +function get_touched_files() { + local rev="$1" + hg status -n --change $rev | grep '\.py$' +} + +rev=${1:-tip} +files=$(get_touched_files $rev) + +for testname in $TESTS; do + eval "$testname $rev \"$files\"" +done + +if [ -z "$ERROR" ]; then + echo "Patch '${rev}' is OK" +else + exit 1 +fi -- cgit v1.2.3