aboutsummaryrefslogtreecommitdiff
path: root/lib/python/qmk/keyboard.py
diff options
context:
space:
mode:
authorNick Brassel <nick@tzarc.org>2021-04-25 11:15:54 +1000
committerGitHub <noreply@github.com>2021-04-25 11:15:54 +1000
commitb88498ba85aaf2fdd955ee9cbae6cffb327497de (patch)
tree3736eead42467f32b31bd84a601b84b75858c033 /lib/python/qmk/keyboard.py
parent0c50a9eae9a7e1773130686b60237ad9e899cd14 (diff)
downloadqmk_firmware-b88498ba85aaf2fdd955ee9cbae6cffb327497de.tar.gz
qmk_firmware-b88498ba85aaf2fdd955ee9cbae6cffb327497de.zip
Fix CLI incorrectly following `DEFAULT_FOLDER` (#12529)
* Attempt to sort out incorrectly following DEFAULT_FOLDER. * Fix CI checks. * qmk pyformat
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)