-
Notifications
You must be signed in to change notification settings - Fork 54
/
create_badge.py
78 lines (49 loc) · 1.81 KB
/
create_badge.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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
import requests
from subprocess import check_output
def get_score(command: str) -> float:
"""Get pylint score"""
output = check_output(command, shell=True).decode("utf-8")
start = output.find("Your code has been rated at ")
if start == -1:
raise ValueError(f'Could not find quality score in "{output.rstrip()}".')
start += len("Your code has been rated at ")
end = start + output[start:].find("/")
score = float(output[start:end])
return score
def get_color(score: float) -> str:
"""Get color for shield"""
if score < 6:
return "critical"
elif score < 8:
return "orange"
elif score < 9:
return "yellow"
elif score < 9.5:
return "yellowgreen"
else:
return "brightgreen"
def create_link(label: str, score: float) -> str:
"""Create link using shields.io"""
label = label.replace(" ", "_")
color = get_color(score)
return f"https://img.shields.io/badge/{label}-{score}-{color}"
def write_quality_badge(command: str, output_file: str) -> None:
"""Write badge for code quality"""
score = get_score("make lint")
link = create_link("code quality", score)
with open(output_file, "wb") as output:
data = requests.get(link).content
output.write(data)
def write_version_badge(output_file: str) -> None:
"""Write badge for version badge"""
from pytermgui import __version__ as version
link = f"https://img.shields.io/badge/pypi_package-{version}-bright_green"
with open(output_file, "wb") as output:
data = requests.get(link).content
output.write(data)
def main() -> None:
"""Main method"""
write_quality_badge("make lint", "assets/badges/quality.svg")
write_version_badge("assets/badges/version.svg")
if __name__ == "__main__":
main()