Merge remote-tracking branch 'origin/master' into develop
This commit is contained in:
		| @@ -440,6 +440,47 @@ def _extract_device_version(info_data): | ||||
|             info_data['usb']['device_version'] = f'{major}.{minor}.{revision}' | ||||
|  | ||||
|  | ||||
| def _config_to_json(key_type, config_value): | ||||
|     """Convert config value using spec | ||||
|     """ | ||||
|     if key_type.startswith('array'): | ||||
|         if '.' in key_type: | ||||
|             key_type, array_type = key_type.split('.', 1) | ||||
|         else: | ||||
|             array_type = None | ||||
|  | ||||
|         config_value = config_value.replace('{', '').replace('}', '').strip() | ||||
|  | ||||
|         if array_type == 'int': | ||||
|             return list(map(int, config_value.split(','))) | ||||
|         else: | ||||
|             return config_value.split(',') | ||||
|  | ||||
|     elif key_type == 'bool': | ||||
|         return config_value in true_values | ||||
|  | ||||
|     elif key_type == 'hex': | ||||
|         return '0x' + config_value[2:].upper() | ||||
|  | ||||
|     elif key_type == 'list': | ||||
|         return config_value.split() | ||||
|  | ||||
|     elif key_type == 'int': | ||||
|         return int(config_value) | ||||
|  | ||||
|     elif key_type == 'str': | ||||
|         return config_value.strip('"') | ||||
|  | ||||
|     elif key_type == 'bcd_version': | ||||
|         major = int(config_value[2:4]) | ||||
|         minor = int(config_value[4]) | ||||
|         revision = int(config_value[5]) | ||||
|  | ||||
|         return f'{major}.{minor}.{revision}' | ||||
|  | ||||
|     return config_value | ||||
|  | ||||
|  | ||||
| def _extract_config_h(info_data, config_c): | ||||
|     """Pull some keyboard information from existing config.h files | ||||
|     """ | ||||
| @@ -452,47 +493,16 @@ def _extract_config_h(info_data, config_c): | ||||
|         key_type = info_dict.get('value_type', 'raw') | ||||
|  | ||||
|         try: | ||||
|             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) | ||||
|             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 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): | ||||
|                     _log_warning(info_data, '%s in config.h is overwriting %s in info.json' % (config_key, info_key)) | ||||
|  | ||||
|                 if key_type.startswith('array'): | ||||
|                     if '.' in key_type: | ||||
|                         key_type, array_type = key_type.split('.', 1) | ||||
|                     else: | ||||
|                         array_type = None | ||||
|  | ||||
|                     config_value = config_c[config_key].replace('{', '').replace('}', '').strip() | ||||
|  | ||||
|                     if array_type == 'int': | ||||
|                         dotty_info[info_key] = list(map(int, config_value.split(','))) | ||||
|                     else: | ||||
|                         dotty_info[info_key] = config_value.split(',') | ||||
|  | ||||
|                 elif key_type == 'bool': | ||||
|                     dotty_info[info_key] = config_c[config_key] in true_values | ||||
|  | ||||
|                 elif key_type == 'hex': | ||||
|                     dotty_info[info_key] = '0x' + config_c[config_key][2:].upper() | ||||
|  | ||||
|                 elif key_type == 'list': | ||||
|                     dotty_info[info_key] = config_c[config_key].split() | ||||
|  | ||||
|                 elif key_type == 'int': | ||||
|                     dotty_info[info_key] = int(config_c[config_key]) | ||||
|  | ||||
|                 elif key_type == 'str': | ||||
|                     dotty_info[info_key] = config_c[config_key].strip('"') | ||||
|  | ||||
|                 elif key_type == 'bcd_version': | ||||
|                     major = int(config_c[config_key][2:4]) | ||||
|                     minor = int(config_c[config_key][4]) | ||||
|                     revision = int(config_c[config_key][5]) | ||||
|  | ||||
|                     dotty_info[info_key] = f'{major}.{minor}.{revision}' | ||||
|  | ||||
|                 else: | ||||
|                     dotty_info[info_key] = config_c[config_key] | ||||
|                 dotty_info[info_key] = _config_to_json(key_type, config_c[config_key]) | ||||
|  | ||||
|         except Exception as e: | ||||
|             _log_warning(info_data, f'{config_key}->{info_key}: {e}') | ||||
| @@ -547,40 +557,16 @@ def _extract_rules_mk(info_data, rules): | ||||
|         key_type = info_dict.get('value_type', 'raw') | ||||
|  | ||||
|         try: | ||||
|             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) | ||||
|             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 rules_key in rules and info_dict.get('to_json', True): | ||||
|                 if dotty_info.get(info_key) and info_dict.get('warn_duplicate', True): | ||||
|                     _log_warning(info_data, '%s in rules.mk is overwriting %s in info.json' % (rules_key, info_key)) | ||||
|  | ||||
|                 if key_type.startswith('array'): | ||||
|                     if '.' in key_type: | ||||
|                         key_type, array_type = key_type.split('.', 1) | ||||
|                     else: | ||||
|                         array_type = None | ||||
|  | ||||
|                     rules_value = rules[rules_key].replace('{', '').replace('}', '').strip() | ||||
|  | ||||
|                     if array_type == 'int': | ||||
|                         dotty_info[info_key] = list(map(int, rules_value.split(','))) | ||||
|                     else: | ||||
|                         dotty_info[info_key] = rules_value.split(',') | ||||
|  | ||||
|                 elif key_type == 'list': | ||||
|                     dotty_info[info_key] = rules[rules_key].split() | ||||
|  | ||||
|                 elif key_type == 'bool': | ||||
|                     dotty_info[info_key] = rules[rules_key] in true_values | ||||
|  | ||||
|                 elif key_type == 'hex': | ||||
|                     dotty_info[info_key] = '0x' + rules[rules_key][2:].upper() | ||||
|  | ||||
|                 elif key_type == 'int': | ||||
|                     dotty_info[info_key] = int(rules[rules_key]) | ||||
|  | ||||
|                 elif key_type == 'str': | ||||
|                     dotty_info[info_key] = rules[rules_key].strip('"') | ||||
|  | ||||
|                 else: | ||||
|                     dotty_info[info_key] = rules[rules_key] | ||||
|                 dotty_info[info_key] = _config_to_json(key_type, rules[rules_key]) | ||||
|  | ||||
|         except Exception as e: | ||||
|             _log_warning(info_data, f'{rules_key}->{info_key}: {e}') | ||||
|   | ||||
| @@ -259,7 +259,6 @@ def test_generate_config_h(): | ||||
|     result = check_subcommand('generate-config-h', '-kb', 'handwired/pytest/basic') | ||||
|     check_returncode(result) | ||||
|     assert '#   define DEVICE_VER 0x0001' in result.stdout | ||||
|     assert '#   define DESCRIPTION "handwired/pytest/basic"' in result.stdout | ||||
|     assert '#   define DIODE_DIRECTION COL2ROW' in result.stdout | ||||
|     assert '#   define MANUFACTURER none' in result.stdout | ||||
|     assert '#   define PRODUCT pytest' in result.stdout | ||||
|   | ||||
		Reference in New Issue
	
	Block a user