diff options
| author | Joel Challis <git@zvecr.com> | 2023-01-03 03:15:29 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-01-03 14:15:29 +1100 |
| commit | c345278101b3882a2f33b078021ab31a6129120a (patch) | |
| tree | 3b5bc671cf95fc56cc9e5eea2b62d223e44f321e | |
| parent | 44800f119d330bb0f02f3d13c36cafe57adc20ee (diff) | |
Replace list_keyboards.sh with CLI calls (#19485)
| -rw-r--r-- | Makefile | 8 | ||||
| -rw-r--r-- | lib/python/qmk/cli/list/keyboards.py | 3 | ||||
| -rw-r--r-- | lib/python/qmk/keyboard.py | 10 | ||||
| -rwxr-xr-x | util/list_keyboards.sh | 6 |
4 files changed, 13 insertions, 14 deletions
| @@ -153,7 +153,7 @@ define PARSE_RULE | |||
| 153 | $$(eval $$(call PARSE_TEST)) | 153 | $$(eval $$(call PARSE_TEST)) |
| 154 | # If the rule starts with the name of a known keyboard, then continue | 154 | # If the rule starts with the name of a known keyboard, then continue |
| 155 | # the parsing from PARSE_KEYBOARD | 155 | # the parsing from PARSE_KEYBOARD |
| 156 | else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(shell util/list_keyboards.sh | sort -u)),true) | 156 | else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(shell $(QMK_BIN) list-keyboards --no-resolve-defaults)),true) |
| 157 | KEYBOARD_RULE=$$(MATCHED_ITEM) | 157 | KEYBOARD_RULE=$$(MATCHED_ITEM) |
| 158 | $$(eval $$(call PARSE_KEYBOARD,$$(MATCHED_ITEM))) | 158 | $$(eval $$(call PARSE_KEYBOARD,$$(MATCHED_ITEM))) |
| 159 | else | 159 | else |
| @@ -246,7 +246,7 @@ endef | |||
| 246 | # if we are going to compile all keyboards, match the rest of the rule | 246 | # if we are going to compile all keyboards, match the rest of the rule |
| 247 | # for each of them | 247 | # for each of them |
| 248 | define PARSE_ALL_KEYBOARDS | 248 | define PARSE_ALL_KEYBOARDS |
| 249 | $$(eval $$(call PARSE_ALL_IN_LIST,PARSE_KEYBOARD,$(shell util/list_keyboards.sh | sort -u))) | 249 | $$(eval $$(call PARSE_ALL_IN_LIST,PARSE_KEYBOARD,$(shell $(QMK_BIN) list-keyboards --no-resolve-defaults))) |
| 250 | endef | 250 | endef |
| 251 | 251 | ||
| 252 | # Prints a list of all known keymaps for the given keyboard | 252 | # Prints a list of all known keymaps for the given keyboard |
| @@ -443,11 +443,11 @@ git-submodules: git-submodule | |||
| 443 | 443 | ||
| 444 | .PHONY: list-keyboards | 444 | .PHONY: list-keyboards |
| 445 | list-keyboards: | 445 | list-keyboards: |
| 446 | util/list_keyboards.sh | sort -u | tr '\n' ' ' | 446 | $(QMK_BIN) list-keyboards --no-resolve-defaults | tr '\n' ' ' |
| 447 | 447 | ||
| 448 | .PHONY: generate-keyboards-file | 448 | .PHONY: generate-keyboards-file |
| 449 | generate-keyboards-file: | 449 | generate-keyboards-file: |
| 450 | util/list_keyboards.sh | sort -u | 450 | $(QMK_BIN) list-keyboards --no-resolve-defaults |
| 451 | 451 | ||
| 452 | .PHONY: clean | 452 | .PHONY: clean |
| 453 | clean: | 453 | clean: |
diff --git a/lib/python/qmk/cli/list/keyboards.py b/lib/python/qmk/cli/list/keyboards.py index 8b6c451673..405b9210e4 100644 --- a/lib/python/qmk/cli/list/keyboards.py +++ b/lib/python/qmk/cli/list/keyboards.py | |||
| @@ -5,9 +5,10 @@ from milc import cli | |||
| 5 | import qmk.keyboard | 5 | import qmk.keyboard |
| 6 | 6 | ||
| 7 | 7 | ||
| 8 | @cli.argument('--no-resolve-defaults', arg_only=True, action='store_false', help='Ignore any "DEFAULT_FOLDER" within keyboards rules.mk') | ||
| 8 | @cli.subcommand("List the keyboards currently defined within QMK") | 9 | @cli.subcommand("List the keyboards currently defined within QMK") |
| 9 | def list_keyboards(cli): | 10 | def list_keyboards(cli): |
| 10 | """List the keyboards currently defined within QMK | 11 | """List the keyboards currently defined within QMK |
| 11 | """ | 12 | """ |
| 12 | for keyboard_name in qmk.keyboard.list_keyboards(): | 13 | for keyboard_name in qmk.keyboard.list_keyboards(cli.args.no_resolve_defaults): |
| 13 | print(keyboard_name) | 14 | print(keyboard_name) |
diff --git a/lib/python/qmk/keyboard.py b/lib/python/qmk/keyboard.py index 6ddbba8fa5..0c980faf2b 100644 --- a/lib/python/qmk/keyboard.py +++ b/lib/python/qmk/keyboard.py | |||
| @@ -98,14 +98,18 @@ def keyboard_completer(prefix, action, parser, parsed_args): | |||
| 98 | return list_keyboards() | 98 | return list_keyboards() |
| 99 | 99 | ||
| 100 | 100 | ||
| 101 | def list_keyboards(): | 101 | def list_keyboards(resolve_defaults=True): |
| 102 | """Returns a list of all keyboards. | 102 | """Returns a list of all keyboards - optionally processing any DEFAULT_FOLDER. |
| 103 | """ | 103 | """ |
| 104 | # We avoid pathlib here because this is performance critical code. | 104 | # We avoid pathlib here because this is performance critical code. |
| 105 | kb_wildcard = os.path.join(base_path, "**", "rules.mk") | 105 | kb_wildcard = os.path.join(base_path, "**", "rules.mk") |
| 106 | paths = [path for path in glob(kb_wildcard, recursive=True) if os.path.sep + 'keymaps' + os.path.sep not in path] | 106 | paths = [path for path in glob(kb_wildcard, recursive=True) if os.path.sep + 'keymaps' + os.path.sep not in path] |
| 107 | 107 | ||
| 108 | return sorted(set(map(resolve_keyboard, map(_find_name, paths)))) | 108 | found = map(_find_name, paths) |
| 109 | if resolve_defaults: | ||
| 110 | found = map(resolve_keyboard, found) | ||
| 111 | |||
| 112 | return sorted(set(found)) | ||
| 109 | 113 | ||
| 110 | 114 | ||
| 111 | def resolve_keyboard(keyboard): | 115 | def resolve_keyboard(keyboard): |
diff --git a/util/list_keyboards.sh b/util/list_keyboards.sh deleted file mode 100755 index 0d1dae888f..0000000000 --- a/util/list_keyboards.sh +++ /dev/null | |||
| @@ -1,6 +0,0 @@ | |||
| 1 | #!/bin/sh | ||
| 2 | # Temporary shell script to find keyboards | ||
| 3 | # | ||
| 4 | # This allows us to include DEFAULT_FOLDER targets. | ||
| 5 | |||
| 6 | find -L keyboards -type f -name rules.mk | grep -v keymaps | sed 's!keyboards/\(.*\)/rules.mk!\1!' | ||
