diff options
author | Nick Brassel <[email protected]> | 2023-11-15 16:24:54 +1100 |
---|---|---|
committer | GitHub <[email protected]> | 2023-11-15 16:24:54 +1100 |
commit | 49382107115f611a61f1f5e20a3b2a92000a35da (patch) | |
tree | 9820ecc000eda92ae6668427c6606f644b618460 /lib/python/qmk/search.py | |
parent | c4d3521ba6bc215f6bccc1892fe28cb83d61f0ef (diff) | |
download | qmk_firmware-49382107115f611a61f1f5e20a3b2a92000a35da.tar.gz qmk_firmware-49382107115f611a61f1f5e20a3b2a92000a35da.zip |
CLI refactoring for common build target APIs (#22221)
Diffstat (limited to 'lib/python/qmk/search.py')
-rw-r--r-- | lib/python/qmk/search.py | 34 |
1 files changed, 17 insertions, 17 deletions
diff --git a/lib/python/qmk/search.py b/lib/python/qmk/search.py index a74450ca87..301d69c6c2 100644 --- a/lib/python/qmk/search.py +++ b/lib/python/qmk/search.py @@ -11,8 +11,9 @@ from milc import cli from qmk.util import parallel_map from qmk.info import keymap_json -import qmk.keyboard -import qmk.keymap +from qmk.keyboard import list_keyboards, keyboard_folder +from qmk.keymap import list_keymaps, locate_keymap +from qmk.build_targets import KeyboardKeymapBuildTarget, BuildTarget def _set_log_level(level): @@ -36,15 +37,15 @@ def _all_keymaps(keyboard): """Returns a list of tuples of (keyboard, keymap) for all keymaps for the given keyboard. """ with ignore_logging(): - keyboard = qmk.keyboard.resolve_keyboard(keyboard) - return [(keyboard, keymap) for keymap in qmk.keymap.list_keymaps(keyboard)] + keyboard = keyboard_folder(keyboard) + return [(keyboard, keymap) for keymap in list_keymaps(keyboard)] def _keymap_exists(keyboard, keymap): """Returns the keyboard name if the keyboard+keymap combination exists, otherwise None. """ with ignore_logging(): - return keyboard if qmk.keymap.locate_keymap(keyboard, keymap) is not None else None + return keyboard if locate_keymap(keyboard, keymap) is not None else None def _load_keymap_info(kb_km): @@ -75,7 +76,7 @@ def _expand_keymap_target(keyboard: str, keymap: str, all_keyboards: List[str] = Caters for 'all' in either keyboard or keymap, or both. """ if all_keyboards is None: - all_keyboards = qmk.keyboard.list_keyboards() + all_keyboards = list_keyboards() if keyboard == 'all': if keymap == 'all': @@ -90,30 +91,29 @@ def _expand_keymap_target(keyboard: str, keymap: str, all_keyboards: List[str] = return [(kb, keymap) for kb in filter(lambda e: e is not None, parallel_map(keyboard_filter, all_keyboards))] else: if keymap == 'all': - keyboard = qmk.keyboard.resolve_keyboard(keyboard) cli.log.info(f'Retrieving list of keymaps for keyboard "{keyboard}"...') return _all_keymaps(keyboard) else: - return [(qmk.keyboard.resolve_keyboard(keyboard), keymap)] + return [(keyboard, keymap)] def expand_keymap_targets(targets: List[Tuple[str, str]]) -> List[Tuple[str, str]]: """Expand a list of (keyboard, keymap) tuples inclusive of 'all', into a list of explicit (keyboard, keymap) tuples. """ overall_targets = [] - all_keyboards = qmk.keyboard.list_keyboards() + all_keyboards = list_keyboards() for target in targets: overall_targets.extend(_expand_keymap_target(target[0], target[1], all_keyboards)) return list(sorted(set(overall_targets))) -def _filter_keymap_targets(target_list: List[Tuple[str, str]], filters: List[str] = [], print_vals: List[str] = []) -> List[Tuple[str, str, List[Tuple[str, str]]]]: +def _filter_keymap_targets(target_list: List[Tuple[str, str]], filters: List[str] = []) -> List[BuildTarget]: """Filter a list of (keyboard, keymap) tuples based on the supplied filters. Optionally includes the values of the queried info.json keys. """ - if len(filters) == 0 and len(print_vals) == 0: - targets = [(kb, km, {}) for kb, km in target_list] + if len(filters) == 0: + targets = [KeyboardKeymapBuildTarget(keyboard=kb, keymap=km) for kb, km in target_list] else: cli.log.info('Parsing data for all matching keyboard/keymap combinations...') valid_keymaps = [(e[0], e[1], dotty(e[2])) for e in parallel_map(_load_keymap_info, target_list)] @@ -172,18 +172,18 @@ def _filter_keymap_targets(target_list: List[Tuple[str, str]], filters: List[str cli.log.warning(f'Unrecognized filter expression: {filter_expr}') continue - targets = [(e[0], e[1], [(p, e[2].get(p)) for p in print_vals]) for e in valid_keymaps] + targets = [KeyboardKeymapBuildTarget(keyboard=e[0], keymap=e[1], json=e[2]) for e in valid_keymaps] return targets -def search_keymap_targets(targets: List[Tuple[str, str]] = [('all', 'default')], filters: List[str] = [], print_vals: List[str] = []) -> List[Tuple[str, str, List[Tuple[str, str]]]]: +def search_keymap_targets(targets: List[Tuple[str, str]] = [('all', 'default')], filters: List[str] = []) -> List[BuildTarget]: """Search for build targets matching the supplied criteria. """ - return list(sorted(_filter_keymap_targets(expand_keymap_targets(targets), filters, print_vals), key=lambda e: (e[0], e[1]))) + return _filter_keymap_targets(expand_keymap_targets(targets), filters) -def search_make_targets(targets: List[str], filters: List[str] = [], print_vals: List[str] = []) -> List[Tuple[str, str, List[Tuple[str, str]]]]: +def search_make_targets(targets: List[str], filters: List[str] = []) -> List[BuildTarget]: """Search for build targets matching the supplied criteria. """ - return list(sorted(_filter_keymap_targets(expand_make_targets(targets), filters, print_vals), key=lambda e: (e[0], e[1]))) + return _filter_keymap_targets(expand_make_targets(targets), filters) |