diff --git a/codecov_cli/helpers/encoder.py b/codecov_cli/helpers/encoder.py index 167a817e..40bf30de 100644 --- a/codecov_cli/helpers/encoder.py +++ b/codecov_cli/helpers/encoder.py @@ -1,13 +1,21 @@ import re +import click + slug_without_subgroups_regex = re.compile(r"[^/\s]+\/[^/\s]+$") slug_with_subgroups_regex = re.compile(r"[^/\s]+(\/[^/\s]+)+$") encoded_slug_regex = re.compile(r"[^:\s]+(:::[^:\s]+)*(::::[^:\s]+){1}$") def encode_slug(slug: str): + if not slug: + raise click.UsageError( + "No slug provided. Please provide a slug using the '--slug' option (e.g. 'owner/repo')." + ) if slug_with_subgroups_is_invalid(slug): - raise ValueError("The provided slug is invalid") + raise click.UsageError( + f"The provided slug '{slug}' is invalid. Expected format: 'owner/repo' or 'owner/subgroup/repo'." + ) owner, repo = slug.rsplit("/", 1) encoded_owner = ":::".join(owner.split("/")) encoded_slug = "::::".join([encoded_owner, repo]) diff --git a/codecov_cli/services/commit/__init__.py b/codecov_cli/services/commit/__init__.py index 23177b03..d386a67e 100644 --- a/codecov_cli/services/commit/__init__.py +++ b/codecov_cli/services/commit/__init__.py @@ -2,6 +2,8 @@ import os import typing +import click + from codecov_cli import __version__ as codecov_cli_version from codecov_cli.helpers.config import CODECOV_INGEST_URL from codecov_cli.helpers.encoder import encode_slug @@ -26,6 +28,11 @@ def create_commit_logic( fail_on_error: bool = False, args: dict = None, ): + if not slug: + raise click.UsageError( + "No slug provided. Please provide a slug using the '--slug' option (e.g. 'owner/repo'). " + "This is required when it cannot be auto-detected from the CI environment." + ) encoded_slug = encode_slug(slug) sending_result = send_commit_data( commit_sha=commit_sha,