-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
83 lines (61 loc) · 2.9 KB
/
Copy pathmain.py
File metadata and controls
83 lines (61 loc) · 2.9 KB
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
79
80
81
82
83
"""The main file of this project."""
from os import getenv
from re import sub
from operator import itemgetter
from logging import basicConfig, INFO
from readme_level import ReadmeLevel
# set default config for application logging
basicConfig(
level=INFO,
format="%(asctime)s %(levelname)s %(message)s",
datefmt="%Y-%m-%d %H:%M:%S"
)
def draw_progress_bar(current_progress: float | int) -> str:
"""Draws the progress bar"""
progress_bar_length: int = int(getenv("INPUT_PROGRESS_BAR_CHAR_LENGTH"))
progress_bar_content = {
"empty_bar": getenv("INPUT_EMPTY_BAR"),
"filled_bar": getenv("INPUT_FILLED_BAR")
}
progress_bar: str = ""
filled_progress: int = round(
progress_bar_length * (current_progress / 100), 0)
for index in range(progress_bar_length):
# because the index starts at 0 we reduce filled_progress
# we should define our own index
if index <= filled_progress - 1:
progress_bar += progress_bar_content["filled_bar"]
if index > filled_progress - 1:
progress_bar += progress_bar_content["empty_bar"]
return progress_bar
def generate_content(readme_instance: ReadmeLevel, start_section: str, end_section: str) -> str:
"""Generates the content for readme file"""
user_level, to_next_lvl = itemgetter("current_level",
"percentage_level")(readme_instance.get_current_level)
contribution_ep = readme_instance.get_contribution_ep
follower_ep = readme_instance.get_follower_ep
project_ep = readme_instance.get_project_ep
# should be generated in later versions
ep_information = (f"<pre>💪 1x contribute → { contribution_ep } experience points\n"
f"🌟 1x follower → { follower_ep } experience points\n"
f"📁 1x repository → { project_ep } experience points</pre>\n")
return (f"{start_section}\n"
f"{ getenv('INPUT_CARD_TITLE') if getenv('INPUT_CARD_TITLE') else '' } \n"
f"<pre>level: { user_level } \
{ draw_progress_bar(to_next_lvl) } {round(to_next_lvl, 2)}%</pre>\n"
f"{ ep_information if getenv('INPUT_SHOW_EP_INFO') else '' }"
f"{end_section}")
if __name__ == "__main__":
README_PATH: str = getenv("INPUT_README_PATH")
START_SECTION: str = "<!--README_LEVEL_UP:START-->"
END_SECTION: str = "<!--README_LEVEL_UP:END-->"
SEARCH_PATTERN: str = fr"{START_SECTION}[\s\S]*?{END_SECTION}"
replace_str: str = generate_content(
ReadmeLevel(), START_SECTION, END_SECTION)
# update readme
with open(README_PATH, mode="r", encoding="utf-8") as readme_file:
readme_content = readme_file.read()
changed_readme = sub(SEARCH_PATTERN, repl=replace_str,
string=readme_content)
with open(README_PATH, mode="w", encoding="utf-8") as readme_file:
readme_file.write(changed_readme)