summaryrefslogtreecommitdiffstats
path: root/.github/workflows/info.yml
blob: 31a11058361cb2e3111bd21e81eb22160c28e6f3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
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