info.yml 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. name: PR Lint keyboards
  2. on:
  3. pull_request:
  4. paths:
  5. - 'keyboards/**'
  6. jobs:
  7. info:
  8. runs-on: ubuntu-latest
  9. container: qmkfm/base_container
  10. steps:
  11. - uses: actions/checkout@v2
  12. with:
  13. fetch-depth: 0
  14. - name: Print info
  15. run: |
  16. git rev-parse --short HEAD
  17. echo ${{ github.event.pull_request.base.sha }}
  18. git diff --name-only ${{ github.event.pull_request.base.sha }}...
  19. - name: Run qmk info
  20. shell: 'bash {0}'
  21. run: |
  22. QMK_CHANGES=$(git diff --name-only ${{ github.event.pull_request.base.sha }}...)
  23. QMK_KEYBOARDS=$(qmk list-keyboards)
  24. exit_code=0
  25. for KB in $QMK_KEYBOARDS; do
  26. KEYBOARD_CHANGES=$(echo "$QMK_CHANGES" | grep -E '^(keyboards/'${KB}'/)')
  27. if [[ -z "$KEYBOARD_CHANGES" ]]; then
  28. # skip as no changes for this keyboard
  29. continue
  30. fi
  31. KEYMAP_ONLY=$(echo "$KEYBOARD_CHANGES" | grep -cv /keymaps/)
  32. if [[ $KEYMAP_ONLY -gt 0 ]]; then
  33. echo "linting ${KB}"
  34. # TODO: info info always returns 0 - right now the only way to know failure is to inspect log lines
  35. qmk info -kb ${KB} 2>&1 | tee /tmp/$$
  36. !(grep -cq ☒ /tmp/$$)
  37. : $((exit_code = $exit_code + $?))
  38. fi
  39. done
  40. exit $exit_code