|
@@ -0,0 +1,49 @@
|
|
|
+name: PR Lint keyboards
|
|
|
+
|
|
|
+on:
|
|
|
+ pull_request:
|
|
|
+ paths:
|
|
|
+ - 'keyboards/**'
|
|
|
+
|
|
|
+jobs:
|
|
|
+ info:
|
|
|
+ runs-on: ubuntu-latest
|
|
|
+
|
|
|
+ container: qmkfm/base_container
|
|
|
+
|
|
|
+ steps:
|
|
|
+ - uses: actions/checkout@v2
|
|
|
+ with:
|
|
|
+ fetch-depth: 0
|
|
|
+
|
|
|
+ - name: Print info
|
|
|
+ run: |
|
|
|
+ git rev-parse --short HEAD
|
|
|
+ echo ${{ github.event.pull_request.base.sha }}
|
|
|
+ git diff --name-only ${{ github.event.pull_request.base.sha }}...
|
|
|
+
|
|
|
+ - name: Run qmk info
|
|
|
+ shell: 'bash {0}'
|
|
|
+ run: |
|
|
|
+ QMK_CHANGES=$(git diff --name-only ${{ github.event.pull_request.base.sha }}...)
|
|
|
+ QMK_KEYBOARDS=$(qmk list-keyboards)
|
|
|
+
|
|
|
+ exit_code=0
|
|
|
+ for KB in $QMK_KEYBOARDS; do
|
|
|
+ KEYBOARD_CHANGES=$(echo "$QMK_CHANGES" | grep -E '^(keyboards/'${KB}'/)')
|
|
|
+ if [[ -z "$KEYBOARD_CHANGES" ]]; then
|
|
|
+ # skip as no changes for this keyboard
|
|
|
+ continue
|
|
|
+ fi
|
|
|
+
|
|
|
+ KEYMAP_ONLY=$(echo "$KEYBOARD_CHANGES" | grep -cv /keymaps/)
|
|
|
+ if [[ $KEYMAP_ONLY -gt 0 ]]; then
|
|
|
+ echo "linting ${KB}"
|
|
|
+
|
|
|
+ # TODO: info info always returns 0 - right now the only way to know failure is to inspect log lines
|
|
|
+ qmk info -kb ${KB} 2>&1 | tee /tmp/$$
|
|
|
+ !(grep -cq ☒ /tmp/$$)
|
|
|
+ : $((exit_code = $exit_code + $?))
|
|
|
+ fi
|
|
|
+ done
|
|
|
+ exit $exit_code
|