Format DD mappings and schemas (#18924)

This commit is contained in:
Ryan 2022-11-08 12:05:08 +11:00 committed by GitHub
parent ce80a3ad46
commit 479d8de622
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
14 changed files with 1290 additions and 1320 deletions

View file

@ -1,15 +1,15 @@
# This file maps keys between `config.h` and `info.json`. It is used by QMK // This file maps keys between `config.h` and `info.json`. It is used by QMK
# to correctly and consistently map back and forth between the two systems. // to correctly and consistently map back and forth between the two systems.
{ {
# Format: // Format:
# <config.h key>: {"info_key": <info.json key>, ["value_type": <value_type>], ["to_json": <true/false>], ["to_c": <true/false>]} // <config.h key>: {"info_key": <info.json key>, ["value_type": <value_type>], ["to_json": <true/false>], ["to_c": <true/false>]}
# value_type: one of "array", "array.int", "bool", "int", "hex", "list", "mapping", "str", "raw" // value_type: one of "array", "array.int", "bool", "int", "hex", "list", "mapping", "str", "raw"
# to_json: Default `true`. Set to `false` to exclude this mapping from info.json // to_json: Default `true`. Set to `false` to exclude this mapping from info.json
# to_c: Default `true`. Set to `false` to exclude this mapping from config.h // to_c: Default `true`. Set to `false` to exclude this mapping from config.h
# warn_duplicate: Default `true`. Set to `false` to turn off warning when a value exists in both places // warn_duplicate: Default `true`. Set to `false` to turn off warning when a value exists in both places
# deprecated: Default `false`. Set to `true` to turn on warning when a value exists // deprecated: Default `false`. Set to `true` to turn on warning when a value exists
# invalid: Default `false`. Set to `true` to generate errors when a value exists // invalid: Default `false`. Set to `true` to generate errors when a value exists
# replace_with: use with a key marked deprecated or invalid to designate a replacement // replace_with: use with a key marked deprecated or invalid to designate a replacement
"AUDIO_VOICES": {"info_key": "audio.voices", "value_type": "bool"}, "AUDIO_VOICES": {"info_key": "audio.voices", "value_type": "bool"},
"BACKLIGHT_BREATHING": {"info_key": "backlight.breathing", "value_type": "bool"}, "BACKLIGHT_BREATHING": {"info_key": "backlight.breathing", "value_type": "bool"},
"BREATHING_PERIOD": {"info_key": "backlight.breathing_period", "value_type": "int"}, "BREATHING_PERIOD": {"info_key": "backlight.breathing_period", "value_type": "int"},
@ -118,7 +118,7 @@
"USB_POLLING_INTERVAL_MS": {"info_key": "usb.polling_interval", "value_type": "int"}, "USB_POLLING_INTERVAL_MS": {"info_key": "usb.polling_interval", "value_type": "int"},
"USB_SUSPEND_WAKEUP_DELAY": {"info_key": "usb.suspend_wakeup_delay", "value_type": "int"}, "USB_SUSPEND_WAKEUP_DELAY": {"info_key": "usb.suspend_wakeup_delay", "value_type": "int"},
# Items we want flagged in lint // Items we want flagged in lint
"NO_ACTION_MACRO": {"info_key": "_invalid.no_action_macro", "invalid": true}, "NO_ACTION_MACRO": {"info_key": "_invalid.no_action_macro", "invalid": true},
"NO_ACTION_FUNCTION": {"info_key": "_invalid.no_action_function", "invalid": true}, "NO_ACTION_FUNCTION": {"info_key": "_invalid.no_action_function", "invalid": true},
"DESCRIPTION": {"info_key": "_invalid.usb_description", "invalid": true}, "DESCRIPTION": {"info_key": "_invalid.usb_description", "invalid": true},

View file

@ -1,15 +1,15 @@
# This file maps keys between `rules.mk` and `info.json`. It is used by QMK // This file maps keys between `rules.mk` and `info.json`. It is used by QMK
# to correctly and consistently map back and forth between the two systems. // to correctly and consistently map back and forth between the two systems.
{ {
# Format: // Format:
# <rules.mk key>: {"info_key": <info.json key>, ["value_type": <value_type>], ["to_json": <true/false>], ["to_c": <true/false>]} // <rules.mk key>: {"info_key": <info.json key>, ["value_type": <value_type>], ["to_json": <true/false>], ["to_c": <true/false>]}
# value_type: one of "array", "array.int", "bool", "int", "list", "hex", "mapping", "str", "raw" // value_type: one of "array", "array.int", "bool", "int", "list", "hex", "mapping", "str", "raw"
# to_json: Default `true`. Set to `false` to exclude this mapping from info.json // to_json: Default `true`. Set to `false` to exclude this mapping from info.json
# to_c: Default `true`. Set to `false` to exclude this mapping from rules.mk // to_c: Default `true`. Set to `false` to exclude this mapping from rules.mk
# warn_duplicate: Default `true`. Set to `false` to turn off warning when a value exists in both places // warn_duplicate: Default `true`. Set to `false` to turn off warning when a value exists in both places
# deprecated: Default `false`. Set to `true` to turn on warning when a value exists // deprecated: Default `false`. Set to `true` to turn on warning when a value exists
# invalid: Default `false`. Set to `true` to generate errors when a value exists // invalid: Default `false`. Set to `true` to generate errors when a value exists
# replace_with: use with a key marked deprecated or invalid to designate a replacement // replace_with: use with a key marked deprecated or invalid to designate a replacement
"BOARD": {"info_key": "board"}, "BOARD": {"info_key": "board"},
"BOOTLOADER": {"info_key": "bootloader", "warn_duplicate": false}, "BOOTLOADER": {"info_key": "bootloader", "warn_duplicate": false},
"BLUETOOTH_DRIVER": {"info_key": "bluetooth.driver"}, "BLUETOOTH_DRIVER": {"info_key": "bluetooth.driver"},
@ -37,7 +37,7 @@
"PS2_MOUSE_ENABLE": {"info_key": "ps2.mouse_enabled", "value_type": "bool"}, "PS2_MOUSE_ENABLE": {"info_key": "ps2.mouse_enabled", "value_type": "bool"},
"PS2_DRIVER": {"info_key": "ps2.driver"}, "PS2_DRIVER": {"info_key": "ps2.driver"},
# Items we want flagged in lint // Items we want flagged in lint
"CTPC": {"info_key": "_deprecated.ctpc", "deprecated": true, "replace_with": "CONVERT_TO=proton_c"}, "CTPC": {"info_key": "_deprecated.ctpc", "deprecated": true, "replace_with": "CONVERT_TO=proton_c"},
"CONVERT_TO_PROTON_C": {"info_key": "_deprecated.ctpc", "deprecated": true, "replace_with": "CONVERT_TO=proton_c"}, "CONVERT_TO_PROTON_C": {"info_key": "_deprecated.ctpc", "deprecated": true, "replace_with": "CONVERT_TO=proton_c"},
"VIAL_ENABLE": {"info_key": "_invalid.vial", "invalid": true} "VIAL_ENABLE": {"info_key": "_invalid.vial", "invalid": true}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -601,7 +601,10 @@
"type": "object", "type": "object",
"additionalProperties": false, "additionalProperties": false,
"properties": { "properties": {
"device_ver": {"$ref": "qmk.definitions.v1#/hex_number_4d"}, # Deprecated "device_ver": {
"$ref": "qmk.definitions.v1#/hex_number_4d",
"$comment": "Deprecated: use device_version instead"
},
"device_version": {"$ref": "qmk.definitions.v1#/bcd_version"}, "device_version": {"$ref": "qmk.definitions.v1#/bcd_version"},
"force_nkro": {"type": "boolean"}, "force_nkro": {"type": "boolean"},
"pid": {"$ref": "qmk.definitions.v1#/hex_number_4d"}, "pid": {"$ref": "qmk.definitions.v1#/hex_number_4d"},

View file

@ -41,7 +41,7 @@ In other cases you should group like options together in an `object`. This is pa
### Add a mapping ### Add a mapping
In most cases you can add a simple mapping. These are maintained as JSON files in `data/mappings/info_config.json` and `data/mappings/info_rules.json`, and control mapping for `config.h` and `rules.mk`, respectively. Each mapping is keyed by the `config.h` or `rules.mk` variable, and the value is a hash with the following keys: In most cases you can add a simple mapping. These are maintained as JSON files in `data/mappings/info_config.hjson` and `data/mappings/info_rules.hjson`, and control mapping for `config.h` and `rules.mk`, respectively. Each mapping is keyed by the `config.h` or `rules.mk` variable, and the value is a hash with the following keys:
* `info_key`: (required) The location within `info.json` for this value. See below. * `info_key`: (required) The location within `info.json` for this value. See below.
* `value_type`: (optional) Default `raw`. The format for this variable's value. See below. * `value_type`: (optional) Default `raw`. The format for this variable's value. See below.

View file

@ -98,7 +98,7 @@ def generate_api(cli):
# Generate data for the global files # Generate data for the global files
keyboard_list = sorted(kb_all) keyboard_list = sorted(kb_all)
keyboard_aliases = json_load(Path('data/mappings/keyboard_aliases.json')) keyboard_aliases = json_load(Path('data/mappings/keyboard_aliases.hjson'))
keyboard_metadata = { keyboard_metadata = {
'last_updated': current_datetime(), 'last_updated': current_datetime(),
'keyboards': keyboard_list, 'keyboards': keyboard_list,

View file

@ -70,7 +70,7 @@ def generate_matrix_size(kb_info_json, config_h_lines):
def generate_config_items(kb_info_json, config_h_lines): def generate_config_items(kb_info_json, config_h_lines):
"""Iterate through the info_config map to generate basic config values. """Iterate through the info_config map to generate basic config values.
""" """
info_config_map = json_load(Path('data/mappings/info_config.json')) info_config_map = json_load(Path('data/mappings/info_config.hjson'))
for config_key, info_dict in info_config_map.items(): for config_key, info_dict in info_config_map.items():
info_key = info_dict['info_key'] info_key = info_dict['info_key']

View file

@ -62,7 +62,7 @@ def generate_rules_mk(cli):
cli.subcommands['generate-rules-mk'].print_help() cli.subcommands['generate-rules-mk'].print_help()
return False return False
info_rules_map = json_load(Path('data/mappings/info_rules.json')) info_rules_map = json_load(Path('data/mappings/info_rules.hjson'))
rules_mk_lines = [GPL2_HEADER_SH_LIKE, GENERATED_HEADER_SH_LIKE] rules_mk_lines = [GPL2_HEADER_SH_LIKE, GENERATED_HEADER_SH_LIKE]
# Iterate through the info_rules map to generate basic rules # Iterate through the info_rules map to generate basic rules

View file

@ -210,7 +210,7 @@ def new_keyboard(cli):
# Preprocess any development_board presets # Preprocess any development_board presets
if mcu in dev_boards: if mcu in dev_boards:
defaults_map = json_load(Path('data/mappings/defaults.json')) defaults_map = json_load(Path('data/mappings/defaults.hjson'))
board = defaults_map['development_board'][mcu] board = defaults_map['development_board'][mcu]
mcu = board['processor'] mcu = board['processor']

View file

@ -214,7 +214,7 @@ def parse_configurator_json(configurator_file):
exit(1) exit(1)
orig_keyboard = user_keymap['keyboard'] orig_keyboard = user_keymap['keyboard']
aliases = json_load(Path('data/mappings/keyboard_aliases.json')) aliases = json_load(Path('data/mappings/keyboard_aliases.hjson'))
if orig_keyboard in aliases: if orig_keyboard in aliases:
if 'target' in aliases[orig_keyboard]: if 'target' in aliases[orig_keyboard]:

View file

@ -483,7 +483,7 @@ def _extract_config_h(info_data, config_c):
""" """
# Pull in data from the json map # Pull in data from the json map
dotty_info = dotty(info_data) dotty_info = dotty(info_data)
info_config_map = json_load(Path('data/mappings/info_config.json')) info_config_map = json_load(Path('data/mappings/info_config.hjson'))
for config_key, info_dict in info_config_map.items(): for config_key, info_dict in info_config_map.items():
info_key = info_dict['info_key'] info_key = info_dict['info_key']
@ -529,7 +529,7 @@ def _extract_config_h(info_data, config_c):
def _process_defaults(info_data): def _process_defaults(info_data):
"""Process any additional defaults based on currently discovered information """Process any additional defaults based on currently discovered information
""" """
defaults_map = json_load(Path('data/mappings/defaults.json')) defaults_map = json_load(Path('data/mappings/defaults.hjson'))
for default_type in defaults_map.keys(): for default_type in defaults_map.keys():
thing_map = defaults_map[default_type] thing_map = defaults_map[default_type]
if default_type in info_data: if default_type in info_data:
@ -555,7 +555,7 @@ def _extract_rules_mk(info_data, rules):
# Pull in data from the json map # Pull in data from the json map
dotty_info = dotty(info_data) dotty_info = dotty(info_data)
info_rules_map = json_load(Path('data/mappings/info_rules.json')) info_rules_map = json_load(Path('data/mappings/info_rules.hjson'))
for rules_key, info_dict in info_rules_map.items(): for rules_key, info_dict in info_rules_map.items():
info_key = info_dict['info_key'] info_key = info_dict['info_key']

View file

@ -69,7 +69,7 @@ def keyboard_folder(keyboard):
This checks aliases and DEFAULT_FOLDER to resolve the actual path for a keyboard. This checks aliases and DEFAULT_FOLDER to resolve the actual path for a keyboard.
""" """
aliases = json_load(Path('data/mappings/keyboard_aliases.json')) aliases = json_load(Path('data/mappings/keyboard_aliases.hjson'))
if keyboard in aliases: if keyboard in aliases:
keyboard = aliases[keyboard].get('target', keyboard) keyboard = aliases[keyboard].get('target', keyboard)