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

This commit is contained in:
QMK Bot
2025-06-09 04:09:34 +00:00
10 changed files with 20 additions and 58 deletions
+8 -26
View File
@@ -101,8 +101,6 @@ def find_keyboard_from_dir():
keymap_index = len(current_path.parts) - current_path.parts.index('keymaps') - 1
current_path = current_path.parents[keymap_index]
current_path = resolve_keyboard(current_path)
if qmk.path.is_keyboard(current_path):
return str(current_path)
@@ -123,7 +121,7 @@ def find_readme(keyboard):
def keyboard_folder(keyboard):
"""Returns the actual keyboard folder.
This checks aliases and DEFAULT_FOLDER to resolve the actual path for a keyboard.
This checks aliases to resolve the actual path for a keyboard.
"""
aliases = keyboard_alias_definitions()
@@ -133,8 +131,6 @@ def keyboard_folder(keyboard):
if keyboard == last_keyboard:
break
keyboard = resolve_keyboard(keyboard)
if not qmk.path.is_keyboard(keyboard):
raise ValueError(f'Invalid keyboard: {keyboard}')
@@ -160,7 +156,7 @@ def keyboard_aliases(keyboard):
def keyboard_folder_or_all(keyboard):
"""Returns the actual keyboard folder.
This checks aliases and DEFAULT_FOLDER to resolve the actual path for a keyboard.
This checks aliases to resolve the actual path for a keyboard.
If the supplied argument is "all", it returns an AllKeyboards object.
"""
if keyboard == 'all':
@@ -181,32 +177,18 @@ def keyboard_completer(prefix, action, parser, parsed_args):
return list_keyboards()
def list_keyboards(resolve_defaults=True):
"""Returns a list of all keyboards - optionally processing any DEFAULT_FOLDER.
def list_keyboards():
"""Returns a list of all keyboards
"""
# We avoid pathlib here because this is performance critical code.
paths = []
for marker in ['rules.mk', 'keyboard.json']:
kb_wildcard = os.path.join(base_path, "**", marker)
paths += [path for path in glob(kb_wildcard, recursive=True) if os.path.sep + 'keymaps' + os.path.sep not in path]
kb_wildcard = os.path.join(base_path, "**", 'keyboard.json')
paths = [path for path in glob(kb_wildcard, recursive=True) if os.path.sep + 'keymaps' + os.path.sep not in path]
found = map(_find_name, paths)
if resolve_defaults:
found = map(resolve_keyboard, found)
return sorted(set(found))
@lru_cache(maxsize=None)
def resolve_keyboard(keyboard):
cur_dir = Path('keyboards')
rules = parse_rules_mk_file(cur_dir / keyboard / 'rules.mk')
while 'DEFAULT_FOLDER' in rules and keyboard != rules['DEFAULT_FOLDER']:
keyboard = rules['DEFAULT_FOLDER']
rules = parse_rules_mk_file(cur_dir / keyboard / 'rules.mk')
return keyboard
def config_h(keyboard):
"""Parses all the config.h files for a keyboard.
@@ -218,7 +200,7 @@ def config_h(keyboard):
"""
config = {}
cur_dir = Path('keyboards')
keyboard = Path(resolve_keyboard(keyboard))
keyboard = Path(keyboard)
for dir in keyboard.parts:
cur_dir = cur_dir / dir
@@ -237,7 +219,7 @@ def rules_mk(keyboard):
a dictionary representing the content of the entire rules.mk tree for a keyboard
"""
cur_dir = Path('keyboards')
keyboard = Path(resolve_keyboard(keyboard))
keyboard = Path(keyboard)
rules = parse_rules_mk_file(cur_dir / keyboard / 'rules.mk')
for i, dir in enumerate(keyboard.parts):