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 | |
| 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')
| -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) |
