diff --git a/.github/workflows/sourcecode-checks.yml b/.github/workflows/sourcecode-checks.yml new file mode 100644 index 000000000..b30849d19 --- /dev/null +++ b/.github/workflows/sourcecode-checks.yml @@ -0,0 +1,26 @@ +name: "Sourcecode Checks" + +on: + push: + branches-ignore: + - 'onlinedocs' + pull_request: + branches-ignore: + - 'onlinedocs' + +env: + +jobs: + + sourcecode-checks: + runs-on: ubuntu-latest + + steps: + + - uses: actions/checkout@v4 + + - name: Install prerequisites + run: >- + + - name: "Run sourcecode-checks script" + run: ./tools/sourcecode-checks diff --git a/tools/check-sourcecode b/tools/check-sourcecode new file mode 100755 index 000000000..fc0b55aea --- /dev/null +++ b/tools/check-sourcecode @@ -0,0 +1,49 @@ +#!/usr/bin/env bash +# check-sourcecode -- check the avrdude source code for zombie mistakes +# Copyright (C) 2024 Hans Ulrich Niedermann +# SPDX-License-Identifier: GPL-2.0-or-later + + +set -e + +prog="$(basename "$0")" +cd "$(dirname "$0")" +cd .. +test -s README.md +test -s COPYING +test -s build.sh +test -d .git/refs/heads + + +declare -a checks=() +fail=0 +succ=0 + + +checks+=(check_ac_cfg) +check_ac_cfg() { + if git grep -E '#include\s+"ac_cfg\.h"' + then + echo "Error: Found #include \"ac_cfg.h\" with double quotes \"\". Should be <>." + echo " See https://github.com/avrdudes/avrdude/issues/1706 for details." + return 1 + fi +} + + +for check in "${checks[@]}" +do + if "$check"; then + succ=$(( "$succ" + 1 )) + status="SUCC" + else + fail=$(( "$fail" + 1 )) + status="FAIL" + fi + echo "$status $check" +done +total=$(( "$succ" + "$fail" )) + + +echo "$prog: Summary: $fail checks failed, $succ checks succeeded. $total checks in total." +exit 0