diff --git a/.flake8 b/.flake8 index 3ed1b92..3469696 100644 --- a/.flake8 +++ b/.flake8 @@ -1,4 +1,4 @@ [flake8] extend-ignore = C408,E203,F841,W503 -max-complexity = 10 +max-complexity = 12 max-line-length = 88 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():