diff options
Diffstat (limited to 'lib')
| m--------- | lib/pico-sdk | 0 | ||||
| -rw-r--r-- | lib/python/qmk/cli/__init__.py | 3 | ||||
| -rw-r--r-- | lib/python/qmk/cli/generate/keycodes_tests.py | 39 | ||||
| -rwxr-xr-x | lib/python/qmk/cli/generate/rules_mk.py | 2 | ||||
| -rw-r--r-- | lib/python/qmk/cli/lint.py | 13 | ||||
| -rwxr-xr-x | lib/python/qmk/json_encoders.py | 8 | ||||
| -rw-r--r-- | lib/python/qmk/keymap.py | 11 | 
7 files changed, 28 insertions, 48 deletions
| diff --git a/lib/pico-sdk b/lib/pico-sdk -Subproject a3398d8d3a772f37fef44a74743a1de69770e9c +Subproject d0c5cac430cc955b65efa0e899748853d9a8092 diff --git a/lib/python/qmk/cli/__init__.py b/lib/python/qmk/cli/__init__.py index 3f2ba9ce3c..26905ec134 100644 --- a/lib/python/qmk/cli/__init__.py +++ b/lib/python/qmk/cli/__init__.py @@ -58,7 +58,6 @@ subcommands = [      'qmk.cli.generate.keyboard_c',      'qmk.cli.generate.keyboard_h',      'qmk.cli.generate.keycodes', -    'qmk.cli.generate.keycodes_tests',      'qmk.cli.generate.keymap_h',      'qmk.cli.generate.make_dependencies',      'qmk.cli.generate.rgb_breathe_table', @@ -215,7 +214,7 @@ if sys.version_info[0] != 3 or sys.version_info[1] < 9:  milc_version = __VERSION__.split('.') -if int(milc_version[0]) < 2 and int(milc_version[1]) < 4: +if int(milc_version[0]) < 2 and int(milc_version[1]) < 9:      requirements = Path('requirements.txt').resolve()      _eprint(f'Your MILC library is too old! Please upgrade: python3 -m pip install -U -r {str(requirements)}') diff --git a/lib/python/qmk/cli/generate/keycodes_tests.py b/lib/python/qmk/cli/generate/keycodes_tests.py deleted file mode 100644 index 453b4693a7..0000000000 --- a/lib/python/qmk/cli/generate/keycodes_tests.py +++ /dev/null @@ -1,39 +0,0 @@ -"""Used by the make system to generate a keycode lookup table from keycodes_{version}.json -""" -from milc import cli - -from qmk.constants import GPL2_HEADER_C_LIKE, GENERATED_HEADER_C_LIKE -from qmk.commands import dump_lines -from qmk.path import normpath -from qmk.keycodes import load_spec - - -def _generate_defines(lines, keycodes): -    lines.append('') -    lines.append('std::map<uint16_t, std::string> KEYCODE_ID_TABLE = {') -    for key, value in keycodes["keycodes"].items(): -        lines.append(f'    {{{value.get("key")}, "{value.get("key")}"}},') -    lines.append('};') - - [email protected]('-v', '--version', arg_only=True, required=True, help='Version of keycodes to generate.') [email protected]('-o', '--output', arg_only=True, type=normpath, help='File to write to') [email protected]('-q', '--quiet', arg_only=True, action='store_true', help="Quiet mode, only output error messages") [email protected]('Used by the make system to generate a keycode lookup table from keycodes_{version}.json', hidden=True) -def generate_keycodes_tests(cli): -    """Generates a keycode to identifier lookup table for unit test output. -    """ - -    # Build the keycodes.h file. -    keycodes_h_lines = [GPL2_HEADER_C_LIKE, GENERATED_HEADER_C_LIKE, '// clang-format off'] -    keycodes_h_lines.append('extern "C" {\n#include <keycode.h>\n}') -    keycodes_h_lines.append('#include <map>') -    keycodes_h_lines.append('#include <string>') -    keycodes_h_lines.append('#include <cstdint>') - -    keycodes = load_spec(cli.args.version) - -    _generate_defines(keycodes_h_lines, keycodes) - -    # Show the results -    dump_lines(cli.args.output, keycodes_h_lines, cli.args.quiet) diff --git a/lib/python/qmk/cli/generate/rules_mk.py b/lib/python/qmk/cli/generate/rules_mk.py index ef4101d77f..01d71d277f 100755 --- a/lib/python/qmk/cli/generate/rules_mk.py +++ b/lib/python/qmk/cli/generate/rules_mk.py @@ -72,6 +72,8 @@ def generate_modules_rules(keyboard, filename):              lines.append(f'COMMUNITY_MODULE_PATHS += {module_path}')              lines.append(f'VPATH += {module_path}')              lines.append(f'SRC += $(wildcard {module_path}/{module_path.name}.c)') +            lines.append(f'MODULE_NAME_{module_path.name.upper()} := {module_path.name}') +            lines.append(f'MODULE_PATH_{module_path.name.upper()} := {module_path}')              lines.append(f'-include {module_path}/rules.mk')          module_jsons = load_module_jsons(modules) diff --git a/lib/python/qmk/cli/lint.py b/lib/python/qmk/cli/lint.py index bcf905f579..e2c76e4465 100644 --- a/lib/python/qmk/cli/lint.py +++ b/lib/python/qmk/cli/lint.py @@ -26,7 +26,7 @@ def _list_defaultish_keymaps(kb):      defaultish.extend(INVALID_KM_NAMES)      keymaps = set() -    for x in list_keymaps(kb): +    for x in list_keymaps(kb, include_userspace=False):          if x in defaultish or x.startswith('default'):              keymaps.add(x) @@ -171,6 +171,14 @@ def _handle_invalid_features(kb, info):      return ok +def _handle_invalid_config(kb, info): +    """Check for invalid keyboard level config +    """ +    if info.get('url') == "": +        cli.log.warning(f'{kb}: Invalid keyboard level config detected - Optional field "url" should not be empty.') +    return True + +  def _chibios_conf_includenext_check(target):      """Check the ChibiOS conf.h for the correct inclusion of the next conf.h      """ @@ -255,6 +263,9 @@ def keyboard_check(kb):  # noqa C901      if not _handle_invalid_features(kb, kb_info):          ok = False +    if not _handle_invalid_config(kb, kb_info): +        ok = False +      invalid_files = git_get_ignored_files(f'keyboards/{kb}/')      for file in invalid_files:          if 'keymap' in file: diff --git a/lib/python/qmk/json_encoders.py b/lib/python/qmk/json_encoders.py index e83a381d52..e8bcf48996 100755 --- a/lib/python/qmk/json_encoders.py +++ b/lib/python/qmk/json_encoders.py @@ -250,12 +250,14 @@ class CommunityModuleJSONEncoder(QMKJSONEncoder):                  return '00module_name'              if key == 'maintainer':                  return '01maintainer' +            if key == 'license': +                return '02license'              if key == 'url': -                return '02url' +                return '03url'              if key == 'features': -                return '03features' +                return '04features'              if key == 'keycodes': -                return '04keycodes' +                return '05keycodes'          elif self.indentation_level == 3:  # keycodes              if key == 'key':                  return '00key' diff --git a/lib/python/qmk/keymap.py b/lib/python/qmk/keymap.py index 8e36461722..b7138aa4a1 100644 --- a/lib/python/qmk/keymap.py +++ b/lib/python/qmk/keymap.py @@ -399,7 +399,7 @@ def is_keymap_target(keyboard, keymap):      return False -def list_keymaps(keyboard, c=True, json=True, additional_files=None, fullpath=False): +def list_keymaps(keyboard, c=True, json=True, additional_files=None, fullpath=False, include_userspace=True):      """List the available keymaps for a keyboard.      Args: @@ -418,14 +418,19 @@ def list_keymaps(keyboard, c=True, json=True, additional_files=None, fullpath=Fa          fullpath              When set to True the full path of the keymap relative to the `qmk_firmware` root will be provided. +        include_userspace +            When set to True, also search userspace for available keymaps +      Returns:          a sorted list of valid keymap names.      """      names = set() +    has_userspace = HAS_QMK_USERSPACE and include_userspace +      # walk up the directory tree until keyboards_dir      # and collect all directories' name with keymap.c file in it -    for search_dir in [QMK_FIRMWARE, QMK_USERSPACE] if HAS_QMK_USERSPACE else [QMK_FIRMWARE]: +    for search_dir in [QMK_FIRMWARE, QMK_USERSPACE] if has_userspace else [QMK_FIRMWARE]:          keyboards_dir = search_dir / Path('keyboards')          kb_path = keyboards_dir / keyboard @@ -443,7 +448,7 @@ def list_keymaps(keyboard, c=True, json=True, additional_files=None, fullpath=Fa      info = info_json(keyboard)      community_parents = list(Path('layouts').glob('*/')) -    if HAS_QMK_USERSPACE and (Path(QMK_USERSPACE) / "layouts").exists(): +    if has_userspace and (Path(QMK_USERSPACE) / "layouts").exists():          community_parents.append(Path(QMK_USERSPACE) / "layouts")      for community_parent in community_parents: | 
