2020-03-10 13:51:19 -07:00
""" Generate a keymap.c from a configurator export.
"""
2021-04-14 19:00:22 -07:00
from argcomplete . completers import FilesCompleter
2020-03-10 13:51:19 -07:00
from milc import cli
import qmk . keymap
import qmk . path
2023-05-22 07:03:59 +01:00
from qmk . commands import dump_lines , parse_configurator_json
2020-03-10 13:51:19 -07:00
2020-03-12 11:17:43 -07:00
@cli.argument ( ' -o ' , ' --output ' , arg_only = True , type = qmk . path . normpath , help = ' File to write to ' )
2020-03-10 13:51:19 -07:00
@cli.argument ( ' -q ' , ' --quiet ' , arg_only = True , action = ' store_true ' , help = " Quiet mode, only output error messages " )
2021-04-14 19:00:22 -07:00
@cli.argument ( ' filename ' , type = qmk . path . FileType ( ' r ' ) , arg_only = True , completer = FilesCompleter ( ' .json ' ) , help = ' Configurator JSON file ' )
2020-03-10 13:51:19 -07:00
@cli.subcommand ( ' Creates a keymap.c from a QMK Configurator export. ' )
def json2c ( cli ) :
""" Generate a keymap.c from a configurator export.
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.
"""
2022-02-28 20:02:39 +00:00
# Parse the configurator from json file (or stdin)
user_keymap = parse_configurator_json ( cli . args . filename )
2020-03-10 13:51:19 -07:00
# Generate the keymap
2021-11-22 11:11:35 -08:00
keymap_c = qmk . keymap . generate_c ( user_keymap )
2020-03-10 13:51:19 -07:00
2023-05-22 07:03:59 +01:00
# Show the results
dump_lines ( cli . args . output , keymap_c . split ( ' \n ' ) , cli . args . quiet )