diff options
-rw-r--r-- | .github/workflows/lint.yml | 30 |
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 |