Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Replace list_keyboards.sh with CLI calls #19485

Merged
merged 3 commits into from
Jan 3, 2023
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions Makefile
Original file line number Diff line number Diff line change
@@ -153,7 +153,7 @@ define PARSE_RULE
$$(eval $$(call PARSE_TEST))
# If the rule starts with the name of a known keyboard, then continue
# the parsing from PARSE_KEYBOARD
else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(shell util/list_keyboards.sh | sort -u)),true)
else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(shell $(QMK_BIN) list-keyboards --no-resolve-defaults)),true)
KEYBOARD_RULE=$$(MATCHED_ITEM)
$$(eval $$(call PARSE_KEYBOARD,$$(MATCHED_ITEM)))
else
@@ -246,7 +246,7 @@ endef
# if we are going to compile all keyboards, match the rest of the rule
# for each of them
define PARSE_ALL_KEYBOARDS
$$(eval $$(call PARSE_ALL_IN_LIST,PARSE_KEYBOARD,$(shell util/list_keyboards.sh | sort -u)))
$$(eval $$(call PARSE_ALL_IN_LIST,PARSE_KEYBOARD,$(shell $(QMK_BIN) list-keyboards --no-resolve-defaults)))
endef

# Prints a list of all known keymaps for the given keyboard
@@ -443,11 +443,11 @@ git-submodules: git-submodule

.PHONY: list-keyboards
list-keyboards:
util/list_keyboards.sh | sort -u | tr '\n' ' '
$(QMK_BIN) list-keyboards --no-resolve-defaults | tr '\n' ' '

.PHONY: generate-keyboards-file
generate-keyboards-file:
util/list_keyboards.sh | sort -u
$(QMK_BIN) list-keyboards --no-resolve-defaults

.PHONY: clean
clean:
3 changes: 2 additions & 1 deletion lib/python/qmk/cli/list/keyboards.py
Original file line number Diff line number Diff line change
@@ -5,9 +5,10 @@
import qmk.keyboard


@cli.argument('--no-resolve-defaults', arg_only=True, action='store_false', help='Ignore any "DEFAULT_FOLDER" within keyboards rules.mk')
@cli.subcommand("List the keyboards currently defined within QMK")
def list_keyboards(cli):
"""List the keyboards currently defined within QMK
"""
for keyboard_name in qmk.keyboard.list_keyboards():
for keyboard_name in qmk.keyboard.list_keyboards(cli.args.no_resolve_defaults):
print(keyboard_name)
10 changes: 7 additions & 3 deletions lib/python/qmk/keyboard.py
Original file line number Diff line number Diff line change
@@ -98,14 +98,18 @@ def keyboard_completer(prefix, action, parser, parsed_args):
return list_keyboards()


def list_keyboards():
"""Returns a list of all keyboards.
def list_keyboards(resolve_defaults=True):
"""Returns a list of all keyboards - optionally processing any DEFAULT_FOLDER.
"""
# We avoid pathlib here because this is performance critical code.
kb_wildcard = os.path.join(base_path, "**", "rules.mk")
paths = [path for path in glob(kb_wildcard, recursive=True) if os.path.sep + 'keymaps' + os.path.sep not in path]

return sorted(set(map(resolve_keyboard, map(_find_name, paths))))
found = map(_find_name, paths)
if resolve_defaults:
found = map(resolve_keyboard, found)

return sorted(set(found))


def resolve_keyboard(keyboard):
6 changes: 0 additions & 6 deletions util/list_keyboards.sh

This file was deleted.