summaryrefslogtreecommitdiffstats
path: root/lib/python
diff options
context:
space:
mode:
authorQMK Bot <hello@qmk.fm>2021-04-25 01:16:24 +0000
committerQMK Bot <hello@qmk.fm>2021-04-25 01:16:24 +0000
commit7718b1598e770dc3bee1c66a4b6a4adedf1e5b3d (patch)
tree00694c8e456943e353495e38b9d8927775262a48 /lib/python
parent65c97527624d4865d3867371722742c477f71268 (diff)
parentb88498ba85aaf2fdd955ee9cbae6cffb327497de (diff)
Merge remote-tracking branch 'origin/master' into develop
Diffstat (limited to 'lib/python')
-rw-r--r--lib/python/qmk/keyboard.py19
1 files changed, 12 insertions, 7 deletions
diff --git a/lib/python/qmk/keyboard.py b/lib/python/qmk/keyboard.py
index 0168d17ef3..e457685567 100644
--- a/lib/python/qmk/keyboard.py
+++ b/lib/python/qmk/keyboard.py
@@ -92,7 +92,16 @@ def list_keyboards():
kb_wildcard = os.path.join(base_path, "**", "rules.mk")
paths = [path for path in glob(kb_wildcard, recursive=True) if 'keymaps' not in path]
- return sorted(map(_find_name, paths))
+ return sorted(set(map(resolve_keyboard, map(_find_name, paths))))
+
+
+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):
@@ -106,8 +115,7 @@ def config_h(keyboard):
"""
config = {}
cur_dir = Path('keyboards')
- rules = rules_mk(keyboard)
- keyboard = Path(rules['DEFAULT_FOLDER'] if 'DEFAULT_FOLDER' in rules else keyboard)
+ keyboard = Path(resolve_keyboard(keyboard))
for dir in keyboard.parts:
cur_dir = cur_dir / dir
@@ -125,13 +133,10 @@ def rules_mk(keyboard):
Returns:
a dictionary representing the content of the entire rules.mk tree for a keyboard
"""
- keyboard = Path(keyboard)
cur_dir = Path('keyboards')
+ keyboard = Path(resolve_keyboard(keyboard))
rules = parse_rules_mk_file(cur_dir / keyboard / 'rules.mk')
- if 'DEFAULT_FOLDER' in rules:
- keyboard = Path(rules['DEFAULT_FOLDER'])
-
for i, dir in enumerate(keyboard.parts):
cur_dir = cur_dir / dir
rules = parse_rules_mk_file(cur_dir / 'rules.mk', rules)