summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/lint.yml30
1 files changed, 30 insertions, 0 deletions
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index 2c0f07410e..1c0667abba 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -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