diff options
author | Nick Brassel <nick@tzarc.org> | 2021-04-25 11:15:54 +1000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-25 11:15:54 +1000 |
commit | b88498ba85aaf2fdd955ee9cbae6cffb327497de (patch) | |
tree | 3736eead42467f32b31bd84a601b84b75858c033 /lib/python/qmk/keyboard.py | |
parent | 0c50a9eae9a7e1773130686b60237ad9e899cd14 (diff) | |
download | qmk_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.py | 19 |
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 | |||
98 | def 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 | ||
98 | def config_h(keyboard): | 107 | def 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) |