diff options
| author | skullydazed <[email protected]> | 2019-07-15 12:14:27 -0700 | 
|---|---|---|
| committer | GitHub <[email protected]> | 2019-07-15 12:14:27 -0700 | 
| commit | a25dd58bc56b0c4010673723ac44eaff914979bb (patch) | |
| tree | e4c08289df1b72db4ef8447ab7fdc13f604cffac /lib/python/qmk/cli/compile | |
| parent | 7ba82cb5b751d69dda6cc77ec8877c89defad3e4 (diff) | |
| download | qmk_firmware-a25dd58bc56b0c4010673723ac44eaff914979bb.tar.gz qmk_firmware-a25dd58bc56b0c4010673723ac44eaff914979bb.zip | |
QMK CLI and JSON keymap support (#6176)0.6.417
* Script to generate keymap.c from JSON file.
* Support for keymap.json
* Add a warning about the keymap.c getting overwritten.
* Fix keymap generating
* Install the python deps
* Flesh out more of the python environment
* Remove defunct json2keymap
* Style everything with yapf
* Polish up python support
* Hide json keymap.c into the .build dir
* Polish up qmk-compile-json
* Make milc work with positional arguments
* Fix a couple small things
* Fix some errors and make the CLI more understandable
* Make the qmk wrapper more robust
* Add basic QMK Doctor
* Clean up docstrings and flesh them out as needed
* remove unused compile_firmware() function
Diffstat (limited to 'lib/python/qmk/cli/compile')
| -rw-r--r-- | lib/python/qmk/cli/compile/__init__.py | 0 | ||||
| -rwxr-xr-x | lib/python/qmk/cli/compile/json.py | 44 | 
2 files changed, 44 insertions, 0 deletions
| diff --git a/lib/python/qmk/cli/compile/__init__.py b/lib/python/qmk/cli/compile/__init__.py new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/lib/python/qmk/cli/compile/__init__.py diff --git a/lib/python/qmk/cli/compile/json.py b/lib/python/qmk/cli/compile/json.py new file mode 100755 index 0000000000..89c16b2063 --- /dev/null +++ b/lib/python/qmk/cli/compile/json.py @@ -0,0 +1,44 @@ +"""Create a keymap directory from a configurator export. +""" +import json +import os +import sys +import subprocess + +from milc import cli + +import qmk.keymap +import qmk.path + + [email protected]('filename', help='Configurator JSON export') [email protected]('Compile a QMK Configurator export.') +def main(cli): +    """Compile a QMK Configurator export. + +    This command creates a new keymap from a configurator export, overwriting an existing keymap if one exists. + +    FIXME(skullydazed): add code to check and warn if the keymap already exists +    """ +    # Error checking +    if cli.args.filename == ('-'): +        cli.log.error('Reading from STDIN is not (yet) supported.') +        exit(1) +    if not os.path.exists(qmk.path.normpath(cli.args.filename)): +        cli.log.error('JSON file does not exist!') +        exit(1) + +    # Parse the configurator json +    with open(qmk.path.normpath(cli.args.filename), 'r') as fd: +        user_keymap = json.load(fd) + +    # Generate the keymap +    keymap_path = qmk.path.keymap(user_keymap['keyboard']) +    cli.log.info('Creating {fg_cyan}%s{style_reset_all} keymap in {fg_cyan}%s', user_keymap['keymap'], keymap_path) +    qmk.keymap.write(user_keymap['keyboard'], user_keymap['keymap'], user_keymap['layout'], user_keymap['layers']) +    cli.log.info('Wrote keymap to {fg_cyan}%s/%s/keymap.c', keymap_path, user_keymap['keymap']) + +    # Compile the keymap +    command = ['make', ':'.join((user_keymap['keyboard'], user_keymap['keymap']))] +    cli.log.info('Compiling keymap with {fg_cyan}%s\n\n', ' '.join(command)) +    subprocess.run(command) | 
