Browse Source

Enhance checks for invalid keyboard build targets (#26122)

Co-authored-by: フィルターペーパー <76888457+filterpaper@users.noreply.github.com>
Joel Challis 4 months ago
parent
commit
2bd8e43256

+ 1 - 17
.github/workflows/lint.yml

@@ -89,23 +89,7 @@ jobs:
       if: always()
       shell: 'bash {0}'
       run: |
-        exit_code=0
-
-        for file in $(find keyboards/ -name rules.mk | grep -v /keymaps/ | grep -v /common/ | grep -v /lib/); do
-            dir=$(dirname $file)
-
-            $(find $dir -name keyboard.json -exec false {} +)
-            if [[ $? == 0 ]]; then
-                echo "$dir::Legacy target detected"
-
-                ((++exit_code))
-            fi
-        done
-
-        if [[ $exit_code -gt 255 ]]; then
-            exit 255
-        fi
-        exit $exit_code
+        qmk ci-validate-keyboard-targets
 
     - name: Verify keyboard aliases
       if: always()

+ 1 - 0
lib/python/qmk/cli/__init__.py

@@ -56,6 +56,7 @@ safe_commands = [
 
 subcommands = [
     'qmk.cli.ci.validate_aliases',
+    'qmk.cli.ci.validate_keyboard_targets',
     'qmk.cli.bux',
     'qmk.cli.c2json',
     'qmk.cli.cd',

+ 28 - 0
lib/python/qmk/cli/ci/validate_keyboard_targets.py

@@ -0,0 +1,28 @@
+"""Validates the list of keyboard targets.
+"""
+from milc import cli
+
+from pathlib import Path
+
+
+@cli.subcommand('Validates the list of keyboard targets.', hidden=True)
+def ci_validate_keyboard_targets(cli):
+    errors = set()
+
+    for rules_mk in Path('keyboards').glob('**/rules.mk'):
+        if any({'keymaps', 'common', 'lib'} & set(rules_mk.parts)):
+            continue
+
+        folder = rules_mk.parent
+        if not any(folder.glob('**/keyboard.json')):
+            errors.add(folder)
+
+    for keymap in Path('keyboards').glob('**/keymaps/'):
+        folder = keymap.parent
+        if not any(folder.glob('**/keyboard.json')):
+            errors.add(folder)
+
+    for error in errors:
+        print(f"{error}::Legacy target detected")
+
+    exit(min(len(errors), 255))