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