diff options
Diffstat (limited to 'lib/python/qmk/keyboard.py')
-rw-r--r-- | lib/python/qmk/keyboard.py | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/lib/python/qmk/keyboard.py b/lib/python/qmk/keyboard.py index d1f2a301d..9ebb2d77d 100644 --- a/lib/python/qmk/keyboard.py +++ b/lib/python/qmk/keyboard.py | |||
@@ -3,10 +3,30 @@ | |||
3 | from array import array | 3 | from array import array |
4 | from math import ceil | 4 | from math import ceil |
5 | from pathlib import Path | 5 | from pathlib import Path |
6 | import os | ||
7 | from glob import glob | ||
6 | 8 | ||
7 | from qmk.c_parse import parse_config_h_file | 9 | from qmk.c_parse import parse_config_h_file |
8 | from qmk.makefile import parse_rules_mk_file | 10 | from qmk.makefile import parse_rules_mk_file |
9 | 11 | ||
12 | base_path = os.path.join(os.getcwd(), "keyboards") + os.path.sep | ||
13 | |||
14 | |||
15 | def _find_name(path): | ||
16 | """Determine the keyboard name by stripping off the base_path and rules.mk. | ||
17 | """ | ||
18 | return path.replace(base_path, "").replace(os.path.sep + "rules.mk", "") | ||
19 | |||
20 | |||
21 | def list_keyboards(): | ||
22 | """Returns a list of all keyboards. | ||
23 | """ | ||
24 | # We avoid pathlib here because this is performance critical code. | ||
25 | kb_wildcard = os.path.join(base_path, "**", "rules.mk") | ||
26 | paths = [path for path in glob(kb_wildcard, recursive=True) if 'keymaps' not in path] | ||
27 | |||
28 | return sorted(map(_find_name, paths)) | ||
29 | |||
10 | 30 | ||
11 | def config_h(keyboard): | 31 | def config_h(keyboard): |
12 | """Parses all the config.h files for a keyboard. | 32 | """Parses all the config.h files for a keyboard. |