diff options
author | Joel Challis <[email protected]> | 2024-03-10 05:20:25 +0000 |
---|---|---|
committer | GitHub <[email protected]> | 2024-03-10 16:20:25 +1100 |
commit | 9f4a9d5826dde903aa0dcec3264cbf192b5044da (patch) | |
tree | 3a3584e796ed2f8847f8a0ac33ef37bde58e66e0 /lib/python/qmk/info.py | |
parent | c5225ab5009476c60a9cb27837615d4f29c9b19a (diff) | |
download | qmk_firmware-9f4a9d5826dde903aa0dcec3264cbf192b5044da.tar.gz qmk_firmware-9f4a9d5826dde903aa0dcec3264cbf192b5044da.zip |
Enable 'keyboard.json' as a build target (#22891)
Diffstat (limited to 'lib/python/qmk/info.py')
-rw-r--r-- | lib/python/qmk/info.py | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/lib/python/qmk/info.py b/lib/python/qmk/info.py index 13588abdb8..2449284668 100644 --- a/lib/python/qmk/info.py +++ b/lib/python/qmk/info.py @@ -863,7 +863,17 @@ def unknown_processor_rules(info_data, rules): def merge_info_jsons(keyboard, info_data): """Return a merged copy of all the info.json files for a keyboard. """ - for info_file in find_info_json(keyboard): + config_files = find_info_json(keyboard) + + # keyboard.json can only exist at the deepest part of the tree + keyboard_json_count = 0 + for index, info_file in enumerate(config_files): + if Path(info_file).name == 'keyboard.json': + keyboard_json_count += 1 + if index != 0 or keyboard_json_count > 1: + _log_error(info_data, f'Invalid keyboard.json location detected: {info_file}.') + + for info_file in config_files: # Load and validate the JSON data new_info_data = json_load(info_file) @@ -921,7 +931,7 @@ def find_info_json(keyboard): base_path = Path('keyboards') keyboard_path = base_path / keyboard keyboard_parent = keyboard_path.parent - info_jsons = [keyboard_path / 'info.json'] + info_jsons = [keyboard_path / 'info.json', keyboard_path / 'keyboard.json'] # Add DEFAULT_FOLDER before parents, if present rules = rules_mk(keyboard) @@ -933,6 +943,7 @@ def find_info_json(keyboard): if keyboard_parent == base_path: break info_jsons.append(keyboard_parent / 'info.json') + info_jsons.append(keyboard_parent / 'keyboard.json') keyboard_parent = keyboard_parent.parent # Return a list of the info.json files that actually exist |