summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoel Challis <git@zvecr.com>2023-05-22 07:03:59 +0100
committerGitHub <noreply@github.com>2023-05-22 07:03:59 +0100
commitfb056c543765b1c8ed7dae031a36ed2d04b1c718 (patch)
tree44f1d9fbbaa7bc3fe35fd6cf7e3d682ea2977c57
parent595f7db3840ab8155264e948d8ad5be5f8a1d0ed (diff)
Update json2c to use dump_lines (#21013)
-rwxr-xr-xlib/python/qmk/cli/json2c.py19
-rw-r--r--lib/python/qmk/tests/test_cli_commands.py4
2 files changed, 5 insertions, 18 deletions
diff --git a/lib/python/qmk/cli/json2c.py b/lib/python/qmk/cli/json2c.py
index 2873a9bfd3..a2db314947 100755
--- a/lib/python/qmk/cli/json2c.py
+++ b/lib/python/qmk/cli/json2c.py
@@ -5,7 +5,7 @@ from milc import cli
5 5
6import qmk.keymap 6import qmk.keymap
7import qmk.path 7import qmk.path
8from qmk.commands import parse_configurator_json 8from qmk.commands import dump_lines, parse_configurator_json
9 9
10 10
11@cli.argument('-o', '--output', arg_only=True, type=qmk.path.normpath, help='File to write to') 11@cli.argument('-o', '--output', arg_only=True, type=qmk.path.normpath, help='File to write to')
@@ -21,21 +21,8 @@ def json2c(cli):
21 # Parse the configurator from json file (or stdin) 21 # Parse the configurator from json file (or stdin)
22 user_keymap = parse_configurator_json(cli.args.filename) 22 user_keymap = parse_configurator_json(cli.args.filename)
23 23
24 # Environment processing
25 if cli.args.output and cli.args.output.name == '-':
26 cli.args.output = None
27
28 # Generate the keymap 24 # Generate the keymap
29 keymap_c = qmk.keymap.generate_c(user_keymap) 25 keymap_c = qmk.keymap.generate_c(user_keymap)
30 26
31 if cli.args.output: 27 # Show the results
32 cli.args.output.parent.mkdir(parents=True, exist_ok=True) 28 dump_lines(cli.args.output, keymap_c.split('\n'), cli.args.quiet)
33 if cli.args.output.exists():
34 cli.args.output.replace(cli.args.output.parent / (cli.args.output.name + '.bak'))
35 cli.args.output.write_text(keymap_c)
36
37 if not cli.args.quiet:
38 cli.log.info('Wrote keymap to %s.', cli.args.output)
39
40 else:
41 print(keymap_c)
diff --git a/lib/python/qmk/tests/test_cli_commands.py b/lib/python/qmk/tests/test_cli_commands.py
index 13359808a0..1725e3ea79 100644
--- a/lib/python/qmk/tests/test_cli_commands.py
+++ b/lib/python/qmk/tests/test_cli_commands.py
@@ -144,7 +144,7 @@ def test_list_keymaps_no_keyboard_found():
144def test_json2c(): 144def test_json2c():
145 result = check_subcommand('json2c', 'keyboards/handwired/pytest/has_template/keymaps/default_json/keymap.json') 145 result = check_subcommand('json2c', 'keyboards/handwired/pytest/has_template/keymaps/default_json/keymap.json')
146 check_returncode(result) 146 check_returncode(result)
147 assert result.stdout == '#include QMK_KEYBOARD_H\nconst uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {\t[0] = LAYOUT_ortho_1x1(KC_A)};\n\n' 147 assert result.stdout == '#include QMK_KEYBOARD_H\nconst uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {\t[0] = LAYOUT_ortho_1x1(KC_A)};\n\n\n'
148 148
149 149
150def test_json2c_macros(): 150def test_json2c_macros():
@@ -158,7 +158,7 @@ def test_json2c_macros():
158def test_json2c_stdin(): 158def test_json2c_stdin():
159 result = check_subcommand_stdin('keyboards/handwired/pytest/has_template/keymaps/default_json/keymap.json', 'json2c', '-') 159 result = check_subcommand_stdin('keyboards/handwired/pytest/has_template/keymaps/default_json/keymap.json', 'json2c', '-')
160 check_returncode(result) 160 check_returncode(result)
161 assert result.stdout == '#include QMK_KEYBOARD_H\nconst uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {\t[0] = LAYOUT_ortho_1x1(KC_A)};\n\n' 161 assert result.stdout == '#include QMK_KEYBOARD_H\nconst uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {\t[0] = LAYOUT_ortho_1x1(KC_A)};\n\n\n'
162 162
163 163
164def test_json2c_wrong_json(): 164def test_json2c_wrong_json():