aboutsummaryrefslogtreecommitdiff
path: root/lib/python/qmk/keyboard.py
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/qmk/keyboard.py
parent65c97527624d4865d3867371722742c477f71268 (diff)
parentb88498ba85aaf2fdd955ee9cbae6cffb327497de (diff)
downloadqmk_firmware-7718b1598e770dc3bee1c66a4b6a4adedf1e5b3d.tar.gz
qmk_firmware-7718b1598e770dc3bee1c66a4b6a4adedf1e5b3d.zip
Merge remote-tracking branch 'origin/master' into develop
Diffstat (limited to 'lib/python/qmk/keyboard.py')
-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 0168d17ef..e45768556 100644
--- a/lib/python/qmk/keyboard.py
+++ b/lib/python/qmk/keyboard.py
@@ -92,7 +92,16 @@ def list_keyboards():
92 kb_wildcard = os.path.join(base_path, "**", "rules.mk") 92 kb_wildcard = os.path.join(base_path, "**", "rules.mk")
93 paths = [path for path in glob(kb_wildcard, recursive=True) if 'keymaps' not in path] 93 paths = [path for path in glob(kb_wildcard, recursive=True) if 'keymaps' not in path]
94 94
95 return sorted(map(_find_name, paths)) 95 return sorted(set(map(resolve_keyboard, map(_find_name, paths))))
96
97
98def resolve_keyboard(keyboard):
99 cur_dir = Path('keyboards')
100 rules = parse_rules_mk_file(cur_dir / keyboard / 'rules.mk')
101 while 'DEFAULT_FOLDER' in rules and keyboard != rules['DEFAULT_FOLDER']:
102 keyboard = rules['DEFAULT_FOLDER']
103 rules = parse_rules_mk_file(cur_dir / keyboard / 'rules.mk')
104 return keyboard
96 105
97 106
98def config_h(keyboard): 107def config_h(keyboard):
@@ -106,8 +115,7 @@ def config_h(keyboard):
106 """ 115 """
107 config = {} 116 config = {}
108 cur_dir = Path('keyboards') 117 cur_dir = Path('keyboards')
109 rules = rules_mk(keyboard) 118 keyboard = Path(resolve_keyboard(keyboard))
110 keyboard = Path(rules['DEFAULT_FOLDER'] if 'DEFAULT_FOLDER' in rules else keyboard)
111 119
112 for dir in keyboard.parts: 120 for dir in keyboard.parts:
113 cur_dir = cur_dir / dir 121 cur_dir = cur_dir / dir
@@ -125,13 +133,10 @@ def rules_mk(keyboard):
125 Returns: 133 Returns:
126 a dictionary representing the content of the entire rules.mk tree for a keyboard 134 a dictionary representing the content of the entire rules.mk tree for a keyboard
127 """ 135 """
128 keyboard = Path(keyboard)
129 cur_dir = Path('keyboards') 136 cur_dir = Path('keyboards')
137 keyboard = Path(resolve_keyboard(keyboard))
130 rules = parse_rules_mk_file(cur_dir / keyboard / 'rules.mk') 138 rules = parse_rules_mk_file(cur_dir / keyboard / 'rules.mk')
131 139
132 if 'DEFAULT_FOLDER' in rules:
133 keyboard = Path(rules['DEFAULT_FOLDER'])
134
135 for i, dir in enumerate(keyboard.parts): 140 for i, dir in enumerate(keyboard.parts):
136 cur_dir = cur_dir / dir 141 cur_dir = cur_dir / dir
137 rules = parse_rules_mk_file(cur_dir / 'rules.mk', rules) 142 rules = parse_rules_mk_file(cur_dir / 'rules.mk', rules)