-
Notifications
You must be signed in to change notification settings - Fork 51
/
Copy path__init__.py
64 lines (55 loc) · 1.91 KB
/
__init__.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import logging
import typing
from codecov_cli.helpers.config import CODECOV_API_URL
from codecov_cli.helpers.encoder import decode_slug, encode_slug
from codecov_cli.helpers.git import get_pull, is_fork_pr
from codecov_cli.helpers.request import (
get_token_header_or_fail,
log_warnings_and_errors_if_any,
send_post_request,
)
logger = logging.getLogger("codecovcli")
def create_commit_logic(
commit_sha: str,
parent_sha: typing.Optional[str],
pr: typing.Optional[str],
branch: typing.Optional[str],
slug: typing.Optional[str],
token: str,
service: typing.Optional[str],
enterprise_url: typing.Optional[str] = None,
fail_on_error: bool = False,
):
encoded_slug = encode_slug(slug)
sending_result = send_commit_data(
commit_sha=commit_sha,
parent_sha=parent_sha,
pr=pr,
branch=branch,
slug=encoded_slug,
token=token,
service=service,
enterprise_url=enterprise_url,
)
log_warnings_and_errors_if_any(sending_result, "Commit creating", fail_on_error)
return sending_result
def send_commit_data(
commit_sha, parent_sha, pr, branch, slug, token, service, enterprise_url
):
decoded_slug = decode_slug(slug)
pull_dict = get_pull(service, decoded_slug, pr) if not token else None
if is_fork_pr(pull_dict):
headers = {"X-Tokenless": pull_dict["head"]["slug"], "X-Tokenless-PR": pr}
branch = pull_dict["head"]["slug"] + ":" + branch
logger.info("The PR is happening in a forked repo. Using tokenless upload.")
else:
headers = get_token_header_or_fail(token)
data = {
"commitid": commit_sha,
"parent_commit_id": parent_sha,
"pullid": pr,
"branch": branch,
}
upload_url = enterprise_url or CODECOV_API_URL
url = f"{upload_url}/upload/{service}/{slug}/commits"
return send_post_request(url=url, data=data, headers=headers)