diff options
| author | Joel Challis <git@zvecr.com> | 2023-05-22 07:03:59 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-05-22 07:03:59 +0100 |
| commit | fb056c543765b1c8ed7dae031a36ed2d04b1c718 (patch) | |
| tree | 44f1d9fbbaa7bc3fe35fd6cf7e3d682ea2977c57 /lib/python/qmk | |
| parent | 595f7db3840ab8155264e948d8ad5be5f8a1d0ed (diff) | |
Update json2c to use dump_lines (#21013)
Diffstat (limited to 'lib/python/qmk')
| -rwxr-xr-x | lib/python/qmk/cli/json2c.py | 19 | ||||
| -rw-r--r-- | lib/python/qmk/tests/test_cli_commands.py | 4 |
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 | ||
| 6 | import qmk.keymap | 6 | import qmk.keymap |
| 7 | import qmk.path | 7 | import qmk.path |
| 8 | from qmk.commands import parse_configurator_json | 8 | from 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(): | |||
| 144 | def test_json2c(): | 144 | def 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 | ||
| 150 | def test_json2c_macros(): | 150 | def test_json2c_macros(): |
| @@ -158,7 +158,7 @@ def test_json2c_macros(): | |||
| 158 | def test_json2c_stdin(): | 158 | def 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 | ||
| 164 | def test_json2c_wrong_json(): | 164 | def test_json2c_wrong_json(): |
