From 2c9ffd47391b8dec98db94bef9b2f5c14a57cf94 Mon Sep 17 00:00:00 2001 From: Ryan Date: Wed, 7 Oct 2020 10:46:10 +1100 Subject: [PATCH] CLI: update subcommands to use return instead of exit() (#10323) --- lib/python/qmk/cli/doctor.py | 2 ++ lib/python/qmk/cli/info.py | 11 ++++------- lib/python/qmk/cli/json/keymap.py | 2 +- lib/python/qmk/cli/json2c.py | 4 ++-- lib/python/qmk/cli/kle2json.py | 6 +++--- lib/python/qmk/cli/list/keymaps.py | 2 +- lib/python/qmk/cli/new/keymap.py | 6 +++--- lib/python/qmk/tests/.gitignore | 2 ++ lib/python/qmk/tests/test_cli_commands.py | 3 ++- 9 files changed, 20 insertions(+), 18 deletions(-) create mode 100644 lib/python/qmk/tests/.gitignore diff --git a/lib/python/qmk/cli/doctor.py b/lib/python/qmk/cli/doctor.py index bad864f72d..984c308d1e 100755 --- a/lib/python/qmk/cli/doctor.py +++ b/lib/python/qmk/cli/doctor.py @@ -364,3 +364,5 @@ def doctor(cli): else: cli.log.info('{fg_yellow}Problems detected, please fix these problems before proceeding.') # FIXME(skullydazed/unclaimed): Link to a document about troubleshooting, or discord or something + + return ok diff --git a/lib/python/qmk/cli/info.py b/lib/python/qmk/cli/info.py index 5e4b391411..0e64d40742 100755 --- a/lib/python/qmk/cli/info.py +++ b/lib/python/qmk/cli/info.py @@ -134,11 +134,11 @@ def info(cli): if not cli.config.info.keyboard: cli.log.error('Missing paramater: --keyboard') cli.subcommands['info'].print_help() - exit(1) + return False if not is_keyboard(cli.config.info.keyboard): cli.log.error('Invalid keyboard: "%s"', cli.config.info.keyboard) - exit(1) + return False # Build the info.json file kb_info_json = info_json(cli.config.info.keyboard) @@ -146,13 +146,10 @@ def info(cli): # Output in the requested format if cli.args.format == 'json': print(json.dumps(kb_info_json)) - exit() - - if cli.args.format == 'text': + elif cli.args.format == 'text': print_text_output(kb_info_json) - elif cli.args.format == 'friendly': print_friendly_output(kb_info_json) - else: cli.log.error('Unknown format: %s', cli.args.format) + return False diff --git a/lib/python/qmk/cli/json/keymap.py b/lib/python/qmk/cli/json/keymap.py index c97a2d0462..2af9faaa72 100755 --- a/lib/python/qmk/cli/json/keymap.py +++ b/lib/python/qmk/cli/json/keymap.py @@ -13,4 +13,4 @@ def json_keymap(cli): """Renamed to `qmk json2c`. """ cli.log.error('This command has been renamed to `qmk json2c`.') - exit(1) + return False diff --git a/lib/python/qmk/cli/json2c.py b/lib/python/qmk/cli/json2c.py index af0d80a9ac..2a90094368 100755 --- a/lib/python/qmk/cli/json2c.py +++ b/lib/python/qmk/cli/json2c.py @@ -22,12 +22,12 @@ def json2c(cli): # TODO(skullydazed/anyone): Read file contents from STDIN cli.log.error('Reading from STDIN is not (yet) supported.') cli.print_usage() - exit(1) + return False if not cli.args.filename.exists(): cli.log.error('JSON file does not exist!') cli.print_usage() - exit(1) + return False # Environment processing if cli.args.output and cli.args.output.name == '-': diff --git a/lib/python/qmk/cli/kle2json.py b/lib/python/qmk/cli/kle2json.py index 798f95fd19..3d1bb8c43c 100755 --- a/lib/python/qmk/cli/kle2json.py +++ b/lib/python/qmk/cli/kle2json.py @@ -37,7 +37,8 @@ def kle2json(cli): file_path = Path(os.environ['ORIG_CWD'], cli.args.filename) # Check for valid file_path for more graceful failure if not file_path.exists(): - return cli.log.error('File {fg_cyan}%s{style_reset_all} was not found.', file_path) + cli.log.error('File {fg_cyan}%s{style_reset_all} was not found.', file_path) + return False out_path = file_path.parent raw_code = file_path.open().read() # Check if info.json exists, allow overwrite with force @@ -50,8 +51,7 @@ def kle2json(cli): except Exception as e: cli.log.error('Could not parse KLE raw data: %s', raw_code) cli.log.exception(e) - # FIXME: This should be better - return cli.log.error('Could not parse KLE raw data.') + return False keyboard = OrderedDict( keyboard_name=kle.name, url='', diff --git a/lib/python/qmk/cli/list/keymaps.py b/lib/python/qmk/cli/list/keymaps.py index b18289eb35..49bc84b2ce 100644 --- a/lib/python/qmk/cli/list/keymaps.py +++ b/lib/python/qmk/cli/list/keymaps.py @@ -15,7 +15,7 @@ def list_keymaps(cli): """ if not is_keyboard(cli.config.list_keymaps.keyboard): cli.log.error('Keyboard %s does not exist!', cli.config.list_keymaps.keyboard) - exit(1) + return False for name in qmk.keymap.list_keymaps(cli.config.list_keymaps.keyboard): print(name) diff --git a/lib/python/qmk/cli/new/keymap.py b/lib/python/qmk/cli/new/keymap.py index 474fe7974f..52c564997b 100755 --- a/lib/python/qmk/cli/new/keymap.py +++ b/lib/python/qmk/cli/new/keymap.py @@ -29,15 +29,15 @@ def new_keymap(cli): # check directories if not kb_path.exists(): cli.log.error('Keyboard %s does not exist!', kb_path) - exit(1) + return False if not keymap_path_default.exists(): cli.log.error('Keyboard default %s does not exist!', keymap_path_default) - exit(1) + return False if keymap_path_new.exists(): cli.log.error('Keymap %s already exists!', keymap_path_new) - exit(1) + return False # create user directory with default keymap files shutil.copytree(keymap_path_default, keymap_path_new, symlinks=True) diff --git a/lib/python/qmk/tests/.gitignore b/lib/python/qmk/tests/.gitignore new file mode 100644 index 0000000000..eeb6581b87 --- /dev/null +++ b/lib/python/qmk/tests/.gitignore @@ -0,0 +1,2 @@ +# Ignore generated info.json from pytest +info.json diff --git a/lib/python/qmk/tests/test_cli_commands.py b/lib/python/qmk/tests/test_cli_commands.py index 68f8ed6047..0b840b4668 100644 --- a/lib/python/qmk/tests/test_cli_commands.py +++ b/lib/python/qmk/tests/test_cli_commands.py @@ -45,8 +45,9 @@ def test_config(): def test_kle2json(): - result = check_subcommand('kle2json', 'kle.txt', '-f') + result = check_subcommand('kle2json', 'lib/python/qmk/tests/kle.txt', '-f') check_returncode(result) + assert 'Wrote out' in result.stdout def test_doctor():