diff options
| -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 |
