From ac64e060790596c773aa0d38bcebb1d0f67f8e47 Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Sat, 24 Jun 2023 09:22:14 +1000 Subject: [PATCH] Verify max one keyboard addition during CI. (#21246) --- .github/workflows/lint.yml | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 2c0f07410e65..1c0667abbacd 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