summaryrefslogtreecommitdiff
path: root/.github/workflows
diff options
context:
space:
mode:
authorNick Brassel <nick@tzarc.org>2023-06-24 09:22:14 +1000
committerGitHub <noreply@github.com>2023-06-24 09:22:14 +1000
commitac64e060790596c773aa0d38bcebb1d0f67f8e47 (patch)
tree56e6e8470661438da764f59c93d7e5a1c5210636 /.github/workflows
parentc1929dc5c729c4ec4fb59df0995ac454faad1a1e (diff)
Verify max one keyboard addition during CI. (#21246)
Diffstat (limited to '.github/workflows')
-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