Browse Source

CI: Run 'qmk info' on keyboard changes (#9212)

Joel Challis 5 years ago
parent
commit
b6e9ef8dd1
1 changed files with 49 additions and 0 deletions
  1. 49 0
      .github/workflows/info.yml

+ 49 - 0
.github/workflows/info.yml

@@ -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