Produce warning if keyboard is not configured via `keyboard.json` (#23321)

master
Joel Challis 2024-04-02 00:48:30 +01:00 committed by GitHub
parent 6f53d10960
commit 573db7a0ee
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 20 additions and 8 deletions

View File

@ -83,6 +83,25 @@ def _find_invalid_encoder_index(info_data):
return ret return ret
def _validate_build_target(keyboard, info_data):
"""Non schema checks
"""
keyboard_json_path = Path('keyboards') / keyboard / 'keyboard.json'
config_files = find_info_json(keyboard)
# keyboard.json can only exist at the deepest part of the tree
keyboard_json_count = 0
for info_file in config_files:
if info_file.name == 'keyboard.json':
keyboard_json_count += 1
if info_file != keyboard_json_path:
_log_error(info_data, f'Invalid keyboard.json location detected: {info_file}.')
# Moving forward keyboard.json should be used as a build target
if keyboard_json_count == 0:
_log_warning(info_data, 'Build marker "keyboard.json" not found.')
def _validate_layouts(keyboard, info_data): # noqa C901 def _validate_layouts(keyboard, info_data): # noqa C901
"""Non schema checks """Non schema checks
""" """
@ -181,6 +200,7 @@ def _validate(keyboard, info_data):
validate(info_data, 'qmk.api.keyboard.v1') validate(info_data, 'qmk.api.keyboard.v1')
# Additional validation # Additional validation
_validate_build_target(keyboard, info_data)
_validate_layouts(keyboard, info_data) _validate_layouts(keyboard, info_data)
_validate_keycodes(keyboard, info_data) _validate_keycodes(keyboard, info_data)
_validate_encoders(keyboard, info_data) _validate_encoders(keyboard, info_data)
@ -890,14 +910,6 @@ def merge_info_jsons(keyboard, info_data):
""" """
config_files = 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: for info_file in config_files:
# Load and validate the JSON data # Load and validate the JSON data
new_info_data = json_load(info_file) new_info_data = json_load(info_file)