~ruther/qmk_firmware

37345e2ace56e1ea17e0ab6b4df3af81f437ae79 — Ryan 3 years ago 0ff8c4f
Provide users with replacements for deprecated/invalid functionality where applicable (#17604)

3 files changed, 23 insertions(+), 7 deletions(-)

M data/mappings/info_config.json
M data/mappings/info_rules.json
M lib/python/qmk/info.py
M data/mappings/info_config.json => data/mappings/info_config.json +2 -1
@@ 9,6 9,7 @@
    # 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
    # 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
    "AUDIO_VOICES": {"info_key": "audio.voices", "value_type": "bool"},
    "BACKLIGHT_BREATHING": {"info_key": "backlight.breathing", "value_type": "bool"},
    "BREATHING_PERIOD": {"info_key": "backlight.breathing_period", "value_type": "int"},


@@ 108,6 109,6 @@
    "NO_ACTION_MACRO": {"info_key": "_invalid.no_action_macro", "invalid": true},
    "NO_ACTION_FUNCTION": {"info_key": "_invalid.no_action_function", "invalid": true},
    "DESCRIPTION": {"info_key": "_invalid.usb_description", "invalid": true},
    "DEBOUNCING_DELAY": {"info_key": "_invalid.debouncing_delay", "invalid": true},
    "DEBOUNCING_DELAY": {"info_key": "_invalid.debouncing_delay", "invalid": true, replace_with: "DEBOUNCE"},
    "PREVENT_STUCK_MODIFIERS": {"info_key": "_invalid.prevent_stuck_mods", "invalid": true},
}

M data/mappings/info_rules.json => data/mappings/info_rules.json +3 -2
@@ 9,6 9,7 @@
    # 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
    # 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
    "BOARD": {"info_key": "board"},
    "BOOTLOADER": {"info_key": "bootloader", "warn_duplicate": false},
    "BLUETOOTH": {"info_key": "bluetooth.driver"},


@@ 29,7 30,7 @@
    "WAIT_FOR_USB": {"info_key": "usb.wait_for", "value_type": "bool"},

    # Items we want flagged in lint
    "CTPC": {"info_key": "_deprecated.ctpc", "deprecated": true},
    "CONVERT_TO_PROTON_C": {"info_key": "_deprecated.ctpc", "deprecated": true},
    "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"},
    "VIAL_ENABLE": {"info_key": "_invalid.vial", "invalid": true},
}

M lib/python/qmk/info.py => lib/python/qmk/info.py +18 -4
@@ 463,10 463,17 @@ def _extract_config_h(info_data, config_c):
        key_type = info_dict.get('value_type', 'raw')

        try:
            replace_with = info_dict.get('replace_with')
            if config_key in config_c and info_dict.get('invalid', False):
                _log_error(info_data, '%s in config.h is no longer a valid option' % config_key)
                if replace_with:
                    _log_error(info_data, '%s in config.h is no longer a valid option and should be replaced with %s' % (config_key, replace_with))
                else:
                    _log_error(info_data, '%s in config.h is no longer a valid option and should be removed' % config_key)
            elif config_key in config_c and info_dict.get('deprecated', False):
                _log_warning(info_data, '%s in config.h is deprecated and will be removed at a later date' % config_key)
                if replace_with:
                    _log_warning(info_data, '%s in config.h is deprecated in favor of %s and will be removed at a later date' % (config_key, replace_with))
                else:
                    _log_warning(info_data, '%s in config.h is deprecated and will be removed at a later date' % config_key)

            if config_key in config_c and info_dict.get('to_json', True):
                if dotty_info.get(info_key) and info_dict.get('warn_duplicate', True):


@@ 527,10 534,17 @@ def _extract_rules_mk(info_data, rules):
        key_type = info_dict.get('value_type', 'raw')

        try:
            replace_with = info_dict.get('replace_with')
            if rules_key in rules and info_dict.get('invalid', False):
                _log_error(info_data, '%s in rules.mk is no longer a valid option' % rules_key)
                if replace_with:
                    _log_error(info_data, '%s in rules.mk is no longer a valid option and should be replaced with %s' % (rules_key, replace_with))
                else:
                    _log_error(info_data, '%s in rules.mk is no longer a valid option and should be removed' % rules_key)
            elif rules_key in rules and info_dict.get('deprecated', False):
                _log_warning(info_data, '%s in rules.mk is deprecated and will be removed at a later date' % rules_key)
                if replace_with:
                    _log_warning(info_data, '%s in rules.mk is deprecated in favor of %s and will be removed at a later date' % (rules_key, replace_with))
                else:
                    _log_warning(info_data, '%s in rules.mk is deprecated and will be removed at a later date' % rules_key)

            if rules_key in rules and info_dict.get('to_json', True):
                if dotty_info.get(info_key) and info_dict.get('warn_duplicate', True):