diff options
author | Joel Challis <git@zvecr.com> | 2021-08-20 16:16:59 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-20 08:16:59 -0700 |
commit | c1add5d0e278da55128964dc305b833fb0bbc063 (patch) | |
tree | 8bc2c2b92029f870cfc2115760b069d7263b5daa /lib/python/qmk | |
parent | 90ff4fe749346c3b92aa8ca6461f5091fabfa99e (diff) | |
download | qmk_firmware-c1add5d0e278da55128964dc305b833fb0bbc063.tar.gz qmk_firmware-c1add5d0e278da55128964dc305b833fb0bbc063.zip |
Restore layout count validation (#14068)
Diffstat (limited to 'lib/python/qmk')
-rw-r--r-- | lib/python/qmk/info.py | 41 |
1 files changed, 6 insertions, 35 deletions
diff --git a/lib/python/qmk/info.py b/lib/python/qmk/info.py index d23b3592ee..5fc14dc859 100644 --- a/lib/python/qmk/info.py +++ b/lib/python/qmk/info.py @@ -341,39 +341,6 @@ def _extract_rules_mk(info_data): return info_data -def _merge_layouts(info_data, new_info_data): - """Merge new_info_data into info_data in an intelligent way. - """ - for layout_name, layout_json in new_info_data['layouts'].items(): - if layout_name in info_data['layouts']: - # Pull in layouts we have a macro for - if len(info_data['layouts'][layout_name]['layout']) != len(layout_json['layout']): - msg = '%s: %s: Number of elements in info.json does not match! info.json:%s != %s:%s' - _log_error(info_data, msg % (info_data['keyboard_folder'], layout_name, len(layout_json['layout']), layout_name, len(info_data['layouts'][layout_name]['layout']))) - else: - for i, key in enumerate(info_data['layouts'][layout_name]['layout']): - key.update(layout_json['layout'][i]) - else: - # Pull in layouts that have matrix data - missing_matrix = False - for key in layout_json.get('layout', {}): - if 'matrix' not in key: - missing_matrix = True - - if not missing_matrix: - if layout_name in info_data['layouts']: - # Update an existing layout with new data - for i, key in enumerate(info_data['layouts'][layout_name]['layout']): - key.update(layout_json['layout'][i]) - - else: - # Copy in the new layout wholesale - layout_json['c_macro'] = False - info_data['layouts'][layout_name] = layout_json - - return info_data - - def _search_keyboard_h(path): current_path = Path('keyboards/') aliases = {} @@ -511,8 +478,12 @@ def merge_info_jsons(keyboard, info_data): layout_name = info_data['layout_aliases'][layout_name] if layout_name in info_data['layouts']: - for new_key, existing_key in zip(layout['layout'], info_data['layouts'][layout_name]['layout']): - existing_key.update(new_key) + if len(info_data['layouts'][layout_name]['layout']) != len(layout['layout']): + msg = '%s: %s: Number of elements in info.json does not match! info.json:%s != %s:%s' + _log_error(info_data, msg % (info_data['keyboard_folder'], layout_name, len(layout['layout']), layout_name, len(info_data['layouts'][layout_name]['layout']))) + else: + for new_key, existing_key in zip(layout['layout'], info_data['layouts'][layout_name]['layout']): + existing_key.update(new_key) else: layout['c_macro'] = False info_data['layouts'][layout_name] = layout |