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 | |
parent | 90ff4fe749346c3b92aa8ca6461f5091fabfa99e (diff) | |
download | qmk_firmware-c1add5d0e278da55128964dc305b833fb0bbc063.tar.gz qmk_firmware-c1add5d0e278da55128964dc305b833fb0bbc063.zip |
Restore layout count validation (#14068)
Diffstat (limited to 'lib/python')
-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 d23b3592e..5fc14dc85 100644 --- a/lib/python/qmk/info.py +++ b/lib/python/qmk/info.py | |||
@@ -341,39 +341,6 @@ def _extract_rules_mk(info_data): | |||
341 | return info_data | 341 | return info_data |
342 | 342 | ||
343 | 343 | ||
344 | def _merge_layouts(info_data, new_info_data): | ||
345 | """Merge new_info_data into info_data in an intelligent way. | ||
346 | """ | ||
347 | for layout_name, layout_json in new_info_data['layouts'].items(): | ||
348 | if layout_name in info_data['layouts']: | ||
349 | # Pull in layouts we have a macro for | ||
350 | if len(info_data['layouts'][layout_name]['layout']) != len(layout_json['layout']): | ||
351 | msg = '%s: %s: Number of elements in info.json does not match! info.json:%s != %s:%s' | ||
352 | _log_error(info_data, msg % (info_data['keyboard_folder'], layout_name, len(layout_json['layout']), layout_name, len(info_data['layouts'][layout_name]['layout']))) | ||
353 | else: | ||
354 | for i, key in enumerate(info_data['layouts'][layout_name]['layout']): | ||
355 | key.update(layout_json['layout'][i]) | ||
356 | else: | ||
357 | # Pull in layouts that have matrix data | ||
358 | missing_matrix = False | ||
359 | for key in layout_json.get('layout', {}): | ||
360 | if 'matrix' not in key: | ||
361 | missing_matrix = True | ||
362 | |||
363 | if not missing_matrix: | ||
364 | if layout_name in info_data['layouts']: | ||
365 | # Update an existing layout with new data | ||
366 | for i, key in enumerate(info_data['layouts'][layout_name]['layout']): | ||
367 | key.update(layout_json['layout'][i]) | ||
368 | |||
369 | else: | ||
370 | # Copy in the new layout wholesale | ||
371 | layout_json['c_macro'] = False | ||
372 | info_data['layouts'][layout_name] = layout_json | ||
373 | |||
374 | return info_data | ||
375 | |||
376 | |||
377 | def _search_keyboard_h(path): | 344 | def _search_keyboard_h(path): |
378 | current_path = Path('keyboards/') | 345 | current_path = Path('keyboards/') |
379 | aliases = {} | 346 | aliases = {} |
@@ -511,8 +478,12 @@ def merge_info_jsons(keyboard, info_data): | |||
511 | layout_name = info_data['layout_aliases'][layout_name] | 478 | layout_name = info_data['layout_aliases'][layout_name] |
512 | 479 | ||
513 | if layout_name in info_data['layouts']: | 480 | if layout_name in info_data['layouts']: |
514 | for new_key, existing_key in zip(layout['layout'], info_data['layouts'][layout_name]['layout']): | 481 | if len(info_data['layouts'][layout_name]['layout']) != len(layout['layout']): |
515 | existing_key.update(new_key) | 482 | msg = '%s: %s: Number of elements in info.json does not match! info.json:%s != %s:%s' |
483 | _log_error(info_data, msg % (info_data['keyboard_folder'], layout_name, len(layout['layout']), layout_name, len(info_data['layouts'][layout_name]['layout']))) | ||
484 | else: | ||
485 | for new_key, existing_key in zip(layout['layout'], info_data['layouts'][layout_name]['layout']): | ||
486 | existing_key.update(new_key) | ||
516 | else: | 487 | else: |
517 | layout['c_macro'] = False | 488 | layout['c_macro'] = False |
518 | info_data['layouts'][layout_name] = layout | 489 | info_data['layouts'][layout_name] = layout |