1
0
Fork 0

[CLI] Add stdin support for json2c command (#11289)

* Implement stdin for json2c command

* Refactor

* Handle json decode error

* Add stdin support for c2json cli command

* Refactor to prevent code duplication

* Change exit(1) to return False in c2json command

* Remove unused import
This commit is contained in:
LongerHV 2020-12-29 20:34:48 +01:00 committed by GitHub
parent 3300164065
commit 221d8fd866
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 70 additions and 35 deletions

View file

@ -1,7 +1,6 @@
"""Generate a keymap.json from a keymap.c file.
"""
import json
import sys
from milc import cli
@ -21,19 +20,14 @@ def c2json(cli):
This command uses the `qmk.keymap` module to generate a keymap.json from a keymap.c file. The generated keymap is written to stdout, or to a file if -o is provided.
"""
cli.args.filename = qmk.path.normpath(cli.args.filename)
if cli.args.filename != '-':
cli.args.filename = qmk.path.normpath(cli.args.filename)
# Error checking
if not cli.args.filename.exists():
cli.log.error('C file does not exist!')
cli.print_usage()
exit(1)
if str(cli.args.filename) == '-':
# TODO(skullydazed/anyone): Read file contents from STDIN
cli.log.error('Reading from STDIN is not (yet) supported.')
cli.print_usage()
exit(1)
# Error checking
if not cli.args.filename.exists():
cli.log.error('C file does not exist!')
cli.print_usage()
return False
# Environment processing
if cli.args.output == ('-'):
@ -47,7 +41,7 @@ def c2json(cli):
keymap_json = qmk.keymap.generate_json(keymap_json['keymap'], keymap_json['keyboard'], keymap_json['layout'], keymap_json['layers'])
except KeyError:
cli.log.error('Something went wrong. Try to use --no-cpp.')
sys.exit(1)
return False
if cli.args.output:
cli.args.output.parent.mkdir(parents=True, exist_ok=True)