1
0
Fork 0

CLI: Improve keymap folder resolution (#20981)

This commit is contained in:
Ryan 2023-05-19 16:05:43 +10:00 committed by GitHub
parent 78afa1164d
commit dc75c23f5c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 32 additions and 13 deletions

View file

@ -36,8 +36,8 @@ def keyboard(keyboard_name):
return Path('keyboards') / keyboard_name
def keymap(keyboard_name):
"""Locate the correct directory for storing a keymap.
def keymaps(keyboard_name):
"""Returns all of the `keymaps/` directories for a given keyboard.
Args:
@ -45,17 +45,36 @@ def keymap(keyboard_name):
The name of the keyboard. Example: clueboard/66/rev3
"""
keyboard_folder = keyboard(keyboard_name)
found_dirs = []
for _ in range(MAX_KEYBOARD_SUBFOLDERS):
if (keyboard_folder / 'keymaps').exists():
return (keyboard_folder / 'keymaps').resolve()
found_dirs.append((keyboard_folder / 'keymaps').resolve())
keyboard_folder = keyboard_folder.parent
if len(found_dirs) > 0:
return found_dirs
logging.error('Could not find the keymaps directory!')
raise NoSuchKeyboardError('Could not find keymaps directory for: %s' % keyboard_name)
def keymap(keyboard_name, keymap_name):
"""Locate the directory of a given keymap.
Args:
keyboard_name
The name of the keyboard. Example: clueboard/66/rev3
keymap_name
The name of the keymap. Example: default
"""
for keymap_dir in keymaps(keyboard_name):
if (keymap_dir / keymap_name).exists():
return (keymap_dir / keymap_name).resolve()
def normpath(path):
"""Returns a `pathlib.Path()` object for a given path.