From b199f43730c150423d15580a9d1811340c2292c6 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Tue, 13 Feb 2024 14:50:00 +0200 Subject: [PATCH] Better error message when cherry_picker is called in wrong state --- cherry_picker/cherry_picker.py | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/cherry_picker/cherry_picker.py b/cherry_picker/cherry_picker.py index 715557f..0a027db 100755 --- a/cherry_picker/cherry_picker.py +++ b/cherry_picker/cherry_picker.py @@ -794,8 +794,12 @@ def cherry_pick_cli( click.echo("\U0001F40D \U0001F352 \u26CF") - chosen_config_path, config = load_config(config_path) - + try: + chosen_config_path, config = load_config(config_path) + except ValueError as exc: + click.echo("You're not inside a Git tree right now! \U0001F645", err=True) + click.echo(exc, err=True) + sys.exit(-1) try: cherry_picker = CherryPicker( pr_remote, @@ -808,8 +812,11 @@ def cherry_pick_cli( config=config, chosen_config_path=chosen_config_path, ) - except InvalidRepoException: - click.echo(f"You're not inside a {config['repo']} repo right now! \U0001F645") + except InvalidRepoException as exc: + click.echo( + f"You're not inside a {config['repo']} repo right now! \U0001F645", err=True + ) + click.echo(exc, err=True) sys.exit(-1) except ValueError as exc: ctx.fail(exc) @@ -994,7 +1001,12 @@ def load_config(path=None): def get_sha1_from(commitish): """Turn 'commitish' into its sha1 hash.""" cmd = ["git", "rev-parse", commitish] - return subprocess.check_output(cmd).strip().decode("utf-8") + try: + return ( + subprocess.check_output(cmd, stderr=subprocess.PIPE).strip().decode("utf-8") + ) + except subprocess.CalledProcessError as exc: + raise ValueError(exc.stderr.strip().decode("utf-8")) def reset_stored_config_ref():