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