diff options
author | Kenny Hoang <kenny.hoang87@gmail.com> | 2019-09-10 08:14:25 -0400 |
---|---|---|
committer | Florian Didron <fdidron@users.noreply.github.com> | 2019-09-26 10:08:39 +0900 |
commit | 5ad8d221c823a93f37e104e4b8337c46d807b9d7 (patch) | |
tree | 2e0659be5c00e7d2ea897ec275d675735ccf7e52 /lib/python | |
parent | 200c6bedd191a16ac87ce5b18a785e93b01a7d38 (diff) |
Created new_keymap.py, python version of new_keymap.sh (#6066)
* Created python version of new_keymap.sh: new_keymap.py
* Updated usage message
* Updated new_keymap.py to use python3.5+ syntax & be more similar to new_keyboard.sh
* Updated complete message
* Updated usage in argparser and removed incorrect usage_message
* Reverted the fstrings back to strings that use .format() & updated docstring convention
* Added helper to recursively cd .. until at qmk_firmware root directory
* Revert "Added helper to recursively cd .. until at qmk_firmware root directory"
This reverts commit 61a0ff3b25f91901287bec8d58eb51a1f126e2ad.
* Updated new_keymap.py to use printf-style format strings
* First draft lib/python/qmk/cli/new/keymap.py with milc
* Removed shebang & syspath appending lines
* Added optional args & resolved some cr comemnts
* Added a docstring and updated strings
Diffstat (limited to 'lib/python')
-rw-r--r-- | lib/python/qmk/cli/__init__.py | 0 | ||||
-rw-r--r-- | lib/python/qmk/cli/new/__init__.py | 0 | ||||
-rwxr-xr-x | lib/python/qmk/cli/new/keymap.py | 41 | ||||
-rw-r--r-- | lib/python/qmk/path.py | 3 |
4 files changed, 44 insertions, 0 deletions
diff --git a/lib/python/qmk/cli/__init__.py b/lib/python/qmk/cli/__init__.py new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/lib/python/qmk/cli/__init__.py diff --git a/lib/python/qmk/cli/new/__init__.py b/lib/python/qmk/cli/new/__init__.py new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/lib/python/qmk/cli/new/__init__.py diff --git a/lib/python/qmk/cli/new/keymap.py b/lib/python/qmk/cli/new/keymap.py new file mode 100755 index 0000000000..b378e5ab43 --- /dev/null +++ b/lib/python/qmk/cli/new/keymap.py @@ -0,0 +1,41 @@ +"""This script automates the copying of the default keymap into your own keymap. +""" +import os +import shutil + +from milc import cli + + +@cli.argument('-k', '--keyboard', help='Specify keyboard name. Example: 1upkeyboards/1up60hse') +@cli.argument('-u', '--username', help='Specify any name for the new keymap directory') +@cli.entrypoint('Creates a new keymap for the keyboard of your choosing') +def main(cli): + """Creates a new keymap for the keyboard of your choosing. + """ + # ask for user input if keyboard or username was not provided in the command line + keyboard = cli.config.general.keyboard if cli.config.general.keyboard else input("Keyboard Name: ") + username = cli.config.general.username if cli.config.general.username else input("Username: ") + + # generate keymap paths + kb_path = os.path.join(os.getcwd(), "keyboards", keyboard) + keymap_path_default = os.path.join(kb_path, "keymaps/default") + keymap_path = os.path.join(kb_path, "keymaps/%s" % username) + + # check directories + if not os.path.exists(kb_path): + cli.log.error('Keyboard %s does not exist!', kb_path) + exit(1) + if not os.path.exists(keymap_path_default): + cli.log.error('Keyboard default %s does not exist!', keymap_path_default) + exit(1) + if os.path.exists(keymap_path): + cli.log.error('Keymap %s already exists!', keymap_path) + exit(1) + + # create user directory with default keymap files + shutil.copytree(keymap_path_default, keymap_path, symlinks=True) + + # end message to user + cli.log.info("%s keymap directory created in: %s\n" + + "Compile a firmware file with your new keymap by typing: \n" + + "qmk compile -kb %s -km %s", username, keymap_path, keyboard, username) diff --git a/lib/python/qmk/path.py b/lib/python/qmk/path.py index f2a8346a51..cf087265fb 100644 --- a/lib/python/qmk/path.py +++ b/lib/python/qmk/path.py @@ -1,7 +1,10 @@ """Functions that help us work with files and folders. """ +import logging import os +from qmk.errors import NoSuchKeyboardError + def keymap(keyboard): """Locate the correct directory for storing a keymap. |