From 076e085e3a4fafca3ee72e686c5a849b24a3c80a Mon Sep 17 00:00:00 2001 From: Sergey Vlasov Date: Wed, 6 Dec 2023 09:13:02 +0300 Subject: [PATCH] Fix more `qmk generate-api` fallout from userspace support After #22222 `list_keymaps(fullpath=True)` returns absolute paths which might point to the userspace directory tree; however, the implementation of `qmk generate-api` expected to get paths relative to `qmk_firmware`. The problem was partially fixed in #22618 for the generated `url` value; however, the `path` value for keymaps was still incorrect (this also made the subsequent code overwrite the `keymap.json` files in the working copy instead of writing those files converted to plain JSON into the API output directory). Fix the `path` value for keymaps to contain the keymap path relative to `qmk_firmware` as it was before the userspace changes, and skip any userspace keymaps which might have been found. --- lib/python/qmk/cli/generate/api.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/python/qmk/cli/generate/api.py b/lib/python/qmk/cli/generate/api.py index 4a24f8f7fdc0..83118184764f 100755 --- a/lib/python/qmk/cli/generate/api.py +++ b/lib/python/qmk/cli/generate/api.py @@ -128,12 +128,15 @@ def generate_api(cli): # Populate the list of JSON keymaps for keymap in list_keymaps(keyboard_name, c=False, fullpath=True): keymap_rel = qmk.path.under_qmk_firmware(keymap) + if keymap_rel is None: + cli.log.debug('Skipping keymap %s (not in qmk_firmware)', keymap) + continue kb_json['keymaps'][keymap.name] = { # TODO: deprecate 'url' as consumer needs to know its potentially hjson 'url': f'https://raw.githubusercontent.com/qmk/qmk_firmware/master/{keymap_rel}/keymap.json', # Instead consumer should grab from API and not repo directly - 'path': (keymap / 'keymap.json').as_posix(), + 'path': (keymap_rel / 'keymap.json').as_posix(), } keyboard_dir.mkdir(parents=True, exist_ok=True)