aboutsummaryrefslogtreecommitdiff
path: root/lib/python/qmk/cli/json
diff options
context:
space:
mode:
authorskullydazed <skullydazed@users.noreply.github.com>2019-09-22 13:25:33 -0700
committerGitHub <noreply@github.com>2019-09-22 13:25:33 -0700
commitd569f0877155efc752994f8a21f5cf001f9d6ae6 (patch)
treeeb58a3e3f916d6d938d8f05742d48919c053a579 /lib/python/qmk/cli/json
parent2f49cae9bcbdd94431659727ef75cfd30f557da8 (diff)
downloadqmk_firmware-d569f0877155efc752994f8a21f5cf001f9d6ae6.tar.gz
qmk_firmware-d569f0877155efc752994f8a21f5cf001f9d6ae6.zip
Configuration system for CLI (#6708)
* Rework how bin/qmk handles subcommands * qmk config wip * Code to show all configs * Fully working `qmk config` command * Mark some CLI arguments so they don't pollute the config file * Fleshed out config support, nicer subcommand support * sync with installable cli * pyformat * Add a test for subcommand_modules * Documentation for the `qmk config` command * split config_token on space so qmk config is more predictable * Rework how subcommands are imported * Document `arg_only` * Document deleting from CLI * Document how multiple operations work * Add cli config to the doc index * Add tests for the cli commands * Make running the tests more reliable * Be more selective about building all default keymaps * Update new-keymap to fit the new subcommand style * Add documentation about writing CLI scripts * Document new-keyboard * Update docs/cli_configuration.md Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com> * Update docs/cli_development.md Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com> * Update docs/cli_development.md Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com> * Update docs/cli_development.md Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com> * Address yan's comments. * Apply suggestions from code review suggestions from @noahfrederick Co-Authored-By: Noah Frederick <code@noahfrederick.com> * Apply suggestions from code review Co-Authored-By: Noah Frederick <code@noahfrederick.com> * Remove pip3 from the test runner
Diffstat (limited to 'lib/python/qmk/cli/json')
-rw-r--r--lib/python/qmk/cli/json/__init__.py5
-rwxr-xr-xlib/python/qmk/cli/json/keymap.py20
2 files changed, 15 insertions, 10 deletions
diff --git a/lib/python/qmk/cli/json/__init__.py b/lib/python/qmk/cli/json/__init__.py
index e69de29bb..f4ebfc45b 100644
--- a/lib/python/qmk/cli/json/__init__.py
+++ b/lib/python/qmk/cli/json/__init__.py
@@ -0,0 +1,5 @@
1"""QMK CLI JSON Subcommands
2
3We list each subcommand here explicitly because all the reliable ways of searching for modules are slow and delay startup.
4"""
5from . import keymap
diff --git a/lib/python/qmk/cli/json/keymap.py b/lib/python/qmk/cli/json/keymap.py
index e2d0b5809..a65acd619 100755
--- a/lib/python/qmk/cli/json/keymap.py
+++ b/lib/python/qmk/cli/json/keymap.py
@@ -9,10 +9,10 @@ from milc import cli
9import qmk.keymap 9import qmk.keymap
10 10
11 11
12@cli.argument('-o', '--output', help='File to write to') 12@cli.argument('-o', '--output', arg_only=True, help='File to write to')
13@cli.argument('filename', help='Configurator JSON file') 13@cli.argument('filename', arg_only=True, help='Configurator JSON file')
14@cli.entrypoint('Create a keymap.c from a QMK Configurator export.') 14@cli.subcommand('Create a keymap.c from a QMK Configurator export.')
15def main(cli): 15def json_keymap(cli):
16 """Generate a keymap.c from a configurator export. 16 """Generate a keymap.c from a configurator export.
17 17
18 This command uses the `qmk.keymap` module to generate a keymap.c from a configurator export. The generated keymap is written to stdout, or to a file if -o is provided. 18 This command uses the `qmk.keymap` module to generate a keymap.c from a configurator export. The generated keymap is written to stdout, or to a file if -o is provided.
@@ -28,8 +28,8 @@ def main(cli):
28 exit(1) 28 exit(1)
29 29
30 # Environment processing 30 # Environment processing
31 if cli.config.general.output == ('-'): 31 if cli.args.output == ('-'):
32 cli.config.general.output = None 32 cli.args.output = None
33 33
34 # Parse the configurator json 34 # Parse the configurator json
35 with open(qmk.path.normpath(cli.args.filename), 'r') as fd: 35 with open(qmk.path.normpath(cli.args.filename), 'r') as fd:
@@ -38,17 +38,17 @@ def main(cli):
38 # Generate the keymap 38 # Generate the keymap
39 keymap_c = qmk.keymap.generate(user_keymap['keyboard'], user_keymap['layout'], user_keymap['layers']) 39 keymap_c = qmk.keymap.generate(user_keymap['keyboard'], user_keymap['layout'], user_keymap['layers'])
40 40
41 if cli.config.general.output: 41 if cli.args.output:
42 output_dir = os.path.dirname(cli.config.general.output) 42 output_dir = os.path.dirname(cli.args.output)
43 43
44 if not os.path.exists(output_dir): 44 if not os.path.exists(output_dir):
45 os.makedirs(output_dir) 45 os.makedirs(output_dir)
46 46
47 output_file = qmk.path.normpath(cli.config.general.output) 47 output_file = qmk.path.normpath(cli.args.output)
48 with open(output_file, 'w') as keymap_fd: 48 with open(output_file, 'w') as keymap_fd:
49 keymap_fd.write(keymap_c) 49 keymap_fd.write(keymap_c)
50 50
51 cli.log.info('Wrote keymap to %s.', cli.config.general.output) 51 cli.log.info('Wrote keymap to %s.', cli.args.output)
52 52
53 else: 53 else:
54 print(keymap_c) 54 print(keymap_c)