@@ 36,6 36,7 @@ jobs:
echo '${{ steps.file_changes.outputs.all_changed_files}}'
- name: Run qmk lint
+ if: always()
shell: 'bash {0}'
run: |
QMK_CHANGES=$(echo -e '${{ steps.file_changes.outputs.all_changed_files}}' | sed 's/ /\n/g')
@@ 72,3 73,32 @@ jobs:
exit 255
fi
exit $exit_code
+
+ - name: Verify at most one added keyboard
+ if: always()
+ shell: 'bash {0}'
+ run: |
+ git reset --hard
+ git clean -xfd
+
+ # Get the keyboard list and count for the target branch
+ git checkout -f ${{ github.base_ref }}
+ git pull --ff-only
+ QMK_KEYBOARDS_BASE=$(qmk list-keyboards)
+ QMK_KEYBOARDS_BASE_COUNT=$(qmk list-keyboards | wc -l)
+
+ # Get the keyboard list and count for the PR
+ git checkout -f ${{ github.head_ref }}
+ git merge --no-commit --squash ${{ github.base_ref }}
+ QMK_KEYBOARDS_PR=$(qmk list-keyboards)
+ QMK_KEYBOARDS_PR_COUNT=$(qmk list-keyboards | wc -l)
+
+ echo "::group::Keyboards changes in this PR"
+ diff -d -U 0 <(echo "$QMK_KEYBOARDS_BASE") <(echo "$QMK_KEYBOARDS_PR") | grep -vE '^(---|\+\+\+|@@)' | sed -e 's@^-@Removed: @g' -e 's@^+@ Added: @g'
+ echo "::endgroup::"
+
+ if [[ $QMK_KEYBOARDS_PR_COUNT -gt $(($QMK_KEYBOARDS_BASE_COUNT + 1)) ]]; then
+ echo "More than one keyboard added in this PR -- see the PR Checklist."
+ echo "::error::More than one keyboard added in this PR -- see the PR Checklist."
+ exit 1
+ fi