1
0
Fork 0

Merge remote-tracking branch 'origin/master' into develop

This commit is contained in:
QMK Bot 2023-10-05 23:35:02 +00:00
commit 0ca60eb759
7 changed files with 97 additions and 55 deletions

View file

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

View file

View file

@ -0,0 +1,46 @@
"""Validates the list of keyboard aliases.
"""
from pathlib import Path
from milc import cli
from qmk.json_schema import json_load
from qmk.keyboard import resolve_keyboard, keyboard_folder
def _safe_keyboard_folder(target):
try:
return keyboard_folder(target) # throws ValueError if it's invalid
except Exception:
return None
def _target_keyboard_exists(target):
# If there's no target, then we can't build it.
if not target:
return False
# If the target directory existed but there was no rules.mk or rules.mk was incorrectly parsed, then we can't build it.
if not resolve_keyboard(target):
return False
# If the target directory exists but it itself has an invalid alias or invalid rules.mk, then we can't build it either.
if not _safe_keyboard_folder(target):
return False
# As far as we can tell, we can build it!
return True
@cli.subcommand('Validates the list of keyboard aliases.', hidden=True)
def ci_validate_aliases(cli):
aliases = json_load(Path('data/mappings/keyboard_aliases.hjson'))
success = True
for alias in aliases.keys():
target = aliases[alias].get('target', None)
if not _target_keyboard_exists(target):
cli.log.error(f'Keyboard alias {alias} has a target that doesn\'t exist: {target}')
success = False
return success

View file

@ -212,13 +212,16 @@ def parse_configurator_json(configurator_file):
cli.log.error(f'Invalid JSON keymap: {configurator_file} : {e.message}')
exit(1)
orig_keyboard = user_keymap['keyboard']
keyboard = user_keymap['keyboard']
aliases = json_load(Path('data/mappings/keyboard_aliases.hjson'))
if orig_keyboard in aliases:
if 'target' in aliases[orig_keyboard]:
user_keymap['keyboard'] = aliases[orig_keyboard]['target']
while keyboard in aliases:
last_keyboard = keyboard
keyboard = aliases[keyboard].get('target', keyboard)
if keyboard == last_keyboard:
break
user_keymap['keyboard'] = keyboard
return user_keymap

View file

@ -92,8 +92,11 @@ def keyboard_folder(keyboard):
"""
aliases = json_load(Path('data/mappings/keyboard_aliases.hjson'))
if keyboard in aliases:
while keyboard in aliases:
last_keyboard = keyboard
keyboard = aliases[keyboard].get('target', keyboard)
if keyboard == last_keyboard:
break
rules_mk_file = Path(base_path, keyboard, 'rules.mk')